auth.go: make user of generics in RequestUser
This commit is contained in:
+6
-13
@@ -7,8 +7,6 @@ import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"git.phc.dm.unipi.it/aziis98/posti-dm/server/util"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -30,7 +28,7 @@ type Authenticator[UserID any, U User[UserID]] interface {
|
||||
// SessionTokenFromUser returns a (new) session token that represents this user
|
||||
SessionTokenFromUser(user UserID) (string, error)
|
||||
// UserFromSessionToken returns the corresponding user for this session token or "service.ErrNoUserForSession"
|
||||
UserFromSessionToken(session string) (U, error)
|
||||
UserFromSessionToken(session string) (*U, error)
|
||||
|
||||
// AuthenticationFailed handles failed authentications
|
||||
AuthenticationFailed(error) http.Handler
|
||||
@@ -130,7 +128,7 @@ func (service *AuthSessionService[UserID, U]) Middleware(config *MiddlewareConfi
|
||||
}
|
||||
|
||||
if config.RequireLogged {
|
||||
userPerms, err := service.Authenticator.UserPermissions(user.UID())
|
||||
userPerms, err := service.Authenticator.UserPermissions((*user).UID())
|
||||
if err != nil {
|
||||
service.Authenticator.OtherError(err).ServeHTTP(w, r)
|
||||
return
|
||||
@@ -181,21 +179,16 @@ func (service *AuthSessionService[UserID, U]) LoggedMiddleware() func(http.Handl
|
||||
})
|
||||
}
|
||||
|
||||
// RequestUser retrives the "userID" from the given request based on the cookie session token.
|
||||
// When generics arrive this will become something like
|
||||
//
|
||||
// func (auth *AuthService[U]) RequestUser(r *http.Request) *U
|
||||
//
|
||||
// and will just return nil if no user is present.
|
||||
func (service *AuthSessionService[UserID, U]) RequestUser(r *http.Request) (U, error) {
|
||||
// RequestUser retrieves the "userID" from the given request based on the cookie session token.
|
||||
func (service *AuthSessionService[UserID, U]) RequestUser(r *http.Request) (*U, error) {
|
||||
cookie, err := r.Cookie(service.SessionCookieName)
|
||||
if err != nil {
|
||||
return util.Zero[U](), err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
user, err := service.Authenticator.UserFromSessionToken(cookie.Value)
|
||||
if err == ErrNoUserForSession {
|
||||
return util.Zero[U](), err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return user, nil
|
||||
|
||||
Reference in New Issue
Block a user