diff --git a/api/v1/accounts.go b/api/v1/accounts.go index 90e2e44..0d7a603 100644 --- a/api/v1/accounts.go +++ b/api/v1/accounts.go @@ -2,6 +2,7 @@ package v1 import ( "context" + "errors" "gitea.badhouseplants.net/softplayer/softplayer-backend/internal/controllers" accounts "gitea.badhouseplants.net/softplayer/softplayer-go-proto/pkg/accounts/v1" @@ -29,7 +30,7 @@ type AccountsServer struct { authorizationCtrl *controllers.AuthController } -func (a *AccountsServer) RefreshToken(ctx context.Context, in *empty.Empty) (*empty.Empty, error) { +func (srv *AccountsServer) RefreshToken(ctx context.Context, in *empty.Empty) (*empty.Empty, error) { claims, err := controllers.ClaimsFromContext(ctx) if err != nil { return nil, status.Error(codes.Aborted, "Context is invalid") @@ -39,16 +40,19 @@ func (a *AccountsServer) RefreshToken(ctx context.Context, in *empty.Empty) (*em return nil, status.Error(codes.Unauthenticated, "Invalid token") } - session, err := a.authorizationCtrl.GetSession(ctx, claims.TokenID) + session, err := srv.authorizationCtrl.GetSession(ctx, claims.TokenID) if err != nil { - return nil, status.Error(codes.Unauthenticated, "Session doesn't exists") + if errors.Is(err, controllers.ErrSessionNotFound) { + return nil, status.Error(codes.Unauthenticated, "Session doesn't exists") + } + return nil, status.Error(codes.Internal, "Somethings is broken on our side") } if session.UserID != claims.UserID { return nil, status.Error(codes.Unauthenticated, "Invalid session") } - accessToken, _, err := a.authorizationCtrl.GenerateToken(&controllers.JWTData{ + accessToken, _, err := srv.authorizationCtrl.GenerateToken(&controllers.JWTData{ UserID: claims.UserID, TokenType: controllers.TokenTypeAccess, TokenAud: controllers.TokenAudWeb, @@ -57,7 +61,7 @@ func (a *AccountsServer) RefreshToken(ctx context.Context, in *empty.Empty) (*em return nil, status.Error(codes.Aborted, "Couldn't generate an access token") } - refreshToken, tokenID, err := a.authorizationCtrl.GenerateToken(&controllers.JWTData{ + refreshToken, tokenID, err := srv.authorizationCtrl.GenerateToken(&controllers.JWTData{ UserID: claims.UserID, TokenType: controllers.TokenTypeRefresh, TokenAud: controllers.TokenAudWeb, @@ -67,7 +71,7 @@ func (a *AccountsServer) RefreshToken(ctx context.Context, in *empty.Empty) (*em } newSession := &controllers.Session{UserID: session.UserID} - if err := a.authorizationCtrl.SaveSession(ctx, tokenID, newSession); err != nil { + if err := srv.authorizationCtrl.SaveSession(ctx, tokenID, newSession); err != nil { return nil, status.Error(codes.Aborted, "Couldn't store session") } diff --git a/api/v1/tokens.go b/api/v1/tokens.go index 2248014..812abd9 100644 --- a/api/v1/tokens.go +++ b/api/v1/tokens.go @@ -14,6 +14,8 @@ import ( ) // var _ tokens.TokensServiceServer = (*TokensServer)(nil) + +// TokensServer implements the Token Service type TokensServer struct { tokens.UnimplementedTokensServiceServer tokenCtrl *controllers.TokenController