You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
719 B
29 lines
719 B
package user
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"net/http"
|
|
|
|
"git.samuelpua.com/telboon/ktm-train-bot/backend/internal/common"
|
|
"github.com/go-chi/render"
|
|
)
|
|
|
|
func (env *Env) CheckUserMiddleware(next http.Handler) http.Handler {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
cookie, err := r.Cookie(env.CookieString)
|
|
if err != nil {
|
|
err = errors.New("user not logged in")
|
|
render.Render(w, r, common.ErrInternalError(err))
|
|
return
|
|
}
|
|
user, err := env.getUserFromSessionToken(cookie.Value)
|
|
if err != nil {
|
|
render.Render(w, r, common.ErrInternalError(err))
|
|
return
|
|
}
|
|
|
|
ctx := context.WithValue(r.Context(), UserContextKey, user)
|
|
next.ServeHTTP(w, r.WithContext(ctx))
|
|
})
|
|
}
|