Better session handling

This commit is contained in:
Eden Kirin
2024-02-08 23:32:58 +01:00
parent 9cd3bee9a5
commit f8d51f523b
4 changed files with 42 additions and 23 deletions

View File

@ -23,12 +23,19 @@ type UserGetter interface {
}
type Request struct {
Ctx *fiber.Ctx
Session *session.Session
Ctx *fiber.Ctx
Session *session.Session
UpdateSession bool
User *types.User
userGetter UserGetter
}
func updateSessionCookieExp(request *Request) {
request.Session.SetExpiry(SESSION_EXPIRES)
request.UpdateSession = true
}
func NewRequest(ctx *fiber.Ctx, userGetter UserGetter) *Request {
session, err := sessionStore.Get(ctx)
if err != nil {
@ -36,20 +43,29 @@ func NewRequest(ctx *fiber.Ctx, userGetter UserGetter) *Request {
}
var user *types.User = nil
var updateSession bool = false
if !session.Fresh() {
userId := session.Get("userId")
if userId != nil {
user = userGetter.GetUserById(userId.(string))
updateSession = true
}
}
return &Request{
Ctx: ctx,
Session: session,
userGetter: userGetter,
User: user,
request := &Request{
Ctx: ctx,
Session: session,
userGetter: userGetter,
User: user,
UpdateSession: updateSession,
}
if updateSession {
updateSessionCookieExp(request)
}
return request
}
func (r *Request) LoginUser(username string, password string) error {
@ -61,10 +77,7 @@ func (r *Request) LoginUser(username string, password string) error {
r.User = user
r.Session.Set("userId", r.User.Id)
r.Session.SetExpiry(SESSION_EXPIRES)
if err := r.Session.Save(); err != nil {
panic(err)
}
updateSessionCookieExp(r)
return nil
}