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

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))
})
}