From f670c78337c0c55b5ef3c3f1328a54169476a662 Mon Sep 17 00:00:00 2001 From: Francesco Minnocci Date: Wed, 30 Mar 2022 00:07:06 +0200 Subject: [PATCH] auth.go: make user of generics in RequestUser --- server/auth/auth.go | 19 ++++++------------- server/server.go | 4 ++-- server/util/generics.go | 6 ------ 3 files changed, 8 insertions(+), 21 deletions(-) delete mode 100644 server/util/generics.go diff --git a/server/auth/auth.go b/server/auth/auth.go index 334e501..c41583e 100644 --- a/server/auth/auth.go +++ b/server/auth/auth.go @@ -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 diff --git a/server/server.go b/server/server.go index f79bee7..5b2cdd5 100644 --- a/server/server.go +++ b/server/server.go @@ -12,7 +12,7 @@ import ( ) type Server struct { - auth *auth.AuthSessionService[string, *db.User] + auth *auth.AuthSessionService[string, db.User] roomServerEventStreams map[string]serverevents.Handler @@ -25,7 +25,7 @@ func NewServer() *Server { server := &Server{ Database: database, - auth: auth.NewAuthSessionService[string, *db.User]( + auth: auth.NewAuthSessionService[string, db.User]( &simpleAuthenticator{ make(map[string]string), database, diff --git a/server/util/generics.go b/server/util/generics.go deleted file mode 100644 index a1eb72d..0000000 --- a/server/util/generics.go +++ /dev/null @@ -1,6 +0,0 @@ -package util - -func Zero[T any]() T { - var zero T - return zero -}