diff --git a/api/v1/accounts_auth.go b/api/v1/accounts_auth.go index b3687c9..2c42abe 100644 --- a/api/v1/accounts_auth.go +++ b/api/v1/accounts_auth.go @@ -1,17 +1,8 @@ package v1 import ( - "context" - "gitea.badhouseplants.net/softplayer/softplayer-backend/internal/controllers" - "gitea.badhouseplants.net/softplayer/softplayer-backend/internal/tools/logger" accounts "gitea.badhouseplants.net/softplayer/softplayer-go-proto/pkg/accounts/v1" - "github.com/golang/protobuf/ptypes/empty" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/types/known/emptypb" ) func NewAccountAuthRPCImpl(ctrl *controllers.AccountController) *AccountsAuthServer { @@ -24,36 +15,3 @@ type AccountsAuthServer struct { accounts.UnimplementedAccountsAuthServiceServer ctrl *controllers.AccountController } - -func (a *AccountsAuthServer) RefreshToken(ctx context.Context, in *empty.Empty) (*empty.Empty, error) { - tokenID := ctx.Value("token_id").(string) - userID := ctx.Value("user_id").(string) - log := logger.FromContext(ctx) - uuid, err := a.ctrl.ValidateRefreshToken(ctx, tokenID, userID) - if err != nil { - return nil, status.Error(codes.Unauthenticated, "refresh token is invalid") - } - accessToken, err := a.ctrl.GenerateAccessToken(uuid) - if err != nil { - log.Error(err, "Couldn't generate an access token") - return nil, status.Error(codes.Aborted, "Couldn't generate Access Token") - } - - refreshToken, err := a.ctrl.GenerateRefreshToken(ctx, uuid) - if err != nil { - log.Error(err, "Couldn't generate a refresh token") - return nil, status.Error(codes.Aborted, "Couldn't generate Access Token") - } - - header := metadata.Pairs( - "access-token", accessToken, - "refreshToken", refreshToken, - ) - - if err := grpc.SetHeader(ctx, header); err != nil { - log.Error(err, "Couldn't set headers") - return nil, status.Error(codes.Unknown, "Couldn't set headers") - } - - return &emptypb.Empty{}, nil -} diff --git a/api/v1/accounts_no_auth.go b/api/v1/accounts_no_auth.go index 39b5886..92f80be 100644 --- a/api/v1/accounts_no_auth.go +++ b/api/v1/accounts_no_auth.go @@ -4,6 +4,7 @@ import ( "context" "gitea.badhouseplants.net/softplayer/softplayer-backend/internal/controllers" + "gitea.badhouseplants.net/softplayer/softplayer-backend/internal/tools/logger" accounts "gitea.badhouseplants.net/softplayer/softplayer-go-proto/pkg/accounts/v1" "github.com/golang/protobuf/ptypes/empty" "google.golang.org/grpc" @@ -79,3 +80,34 @@ func (a *AccountsNoAuthServer) SignUp(ctx context.Context, in *accounts.SignUpRe } return &emptypb.Empty{}, nil } + +func (a *AccountsAuthServer) RefreshToken(ctx context.Context, in *empty.Empty) (*empty.Empty, error) { + log := logger.FromContext(ctx) + uuid, err := a.ctrl.ValidateRefreshToken(ctx, tokenID, userID) + if err != nil { + return nil, status.Error(codes.Unauthenticated, "refresh token is invalid") + } + accessToken, err := a.ctrl.GenerateAccessToken(uuid) + if err != nil { + log.Error(err, "Couldn't generate an access token") + return nil, status.Error(codes.Aborted, "Couldn't generate Access Token") + } + + refreshToken, err := a.ctrl.GenerateRefreshToken(ctx, uuid) + if err != nil { + log.Error(err, "Couldn't generate a refresh token") + return nil, status.Error(codes.Aborted, "Couldn't generate Access Token") + } + + header := metadata.Pairs( + "access-token", accessToken, + "refreshToken", refreshToken, + ) + + if err := grpc.SetHeader(ctx, header); err != nil { + log.Error(err, "Couldn't set headers") + return nil, status.Error(codes.Unknown, "Couldn't set headers") + } + + return &emptypb.Empty{}, nil +} diff --git a/internal/controllers/accounts.go b/internal/controllers/accounts.go index 31d98da..d941f4a 100644 --- a/internal/controllers/accounts.go +++ b/internal/controllers/accounts.go @@ -117,8 +117,6 @@ func (c *AccountController) ValidateRefreshToken(ctx context.Context, tokenID, u log.Error(err, "Couldn't delete redis entry") return "", err } - log.Info(userIDRedis) - log.Info(userID) if userID != userIDRedis { return "", errors.New("user id doesn't match") } diff --git a/main.go b/main.go index cee7ddd..d3e8b63 100644 --- a/main.go +++ b/main.go @@ -177,10 +177,14 @@ func server(ctx context.Context, params Serve) error { } if claims, ok := token.Claims.(jwt.MapClaims); ok { - ctx = context.WithValue(ctx, "token_id", claims["token_id"].(string)) - ctx = context.WithValue(ctx, "user_id", claims["user_id"].(string)) + userIDRaw, userIDOk := claims["user_id"] + if !userIDOk { + return nil, errors.New("required claims are missing in the token") + } + userID := userIDRaw.(string) + log.Info(userID) } else { - return ctx, errors.New("claims are missing int the token") + return ctx, errors.New("claims are missing in the token") } return ctx, nil }