Access token auth implemented

Signed-off-by: Nikolai Rodionov <iam@allanger.xyz>
This commit is contained in:
2026-04-28 14:27:06 +02:00
parent d2977ce4d9
commit bec92425a5
2 changed files with 70 additions and 0 deletions

View File

@@ -76,3 +76,41 @@ func (a *AccountsNoAuthServer) ResetPassword(ctx context.Context, in *accounts.R
func (acc *AccountsNoAuthServer) NewPassword(ctx context.Context, in *accounts.NewPasswordRequest) (*empty.Empty, error) {
return nil, status.Error(codes.Unimplemented, "Endpoint is not implemented")
}
func (a *AccountsNoAuthServer) RefreshToken(ctx context.Context, in *empty.Empty) (*empty.Empty, error) {
log := logger.FromContext(ctx)
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
return nil, status.Error(codes.Unauthenticated, "User is not authorized")
}
tokenString := md.Get("token")[0]
uuid, err := a.ctrl.ValidateRefreshToken(ctx, tokenString)
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
}