MCPcopy Create free account
hub / github.com/PaperDebugger/paperdebugger / RefreshToken

Method RefreshToken

internal/api/auth/refresh_token.go:15–43  ·  view source on GitHub ↗
(ctx context.Context, req *authv1.RefreshTokenRequest)

Source from the content-addressed store, hash-verified

13)
14
15func (s *AuthServer) RefreshToken(ctx context.Context, req *authv1.RefreshTokenRequest) (*authv1.RefreshTokenResponse, error) {
16 token, err := s.tokenService.GetTokenByToken(ctx, req.RefreshToken)
17 if err == mongo.ErrNoDocuments {
18 return nil, shared.ErrInvalidToken()
19 }
20 if err != nil {
21 return nil, err
22 }
23
24 if token.Type != "refreshToken" || token.ExpiresAt.Before(time.Now()) {
25 return nil, shared.ErrInvalidToken()
26 }
27
28 token.Token = bson.NewObjectID().Hex()
29 token.ExpiresAt = time.Now().Add(time.Hour * 24 * 30)
30 newJwtToken, err := jwt.SignJwtToken(token.UserID.Hex())
31 if err != nil {
32 return nil, err
33 }
34 newRefreshToken, err := s.tokenService.UpdateToken(ctx, token)
35 if err != nil {
36 return nil, err
37 }
38
39 return &authv1.RefreshTokenResponse{
40 Token: newJwtToken,
41 RefreshToken: newRefreshToken.Token,
42 }, nil
43}

Callers 1

TestAuthServerFunction · 0.95

Calls 3

SignJwtTokenFunction · 0.92
GetTokenByTokenMethod · 0.80
UpdateTokenMethod · 0.80

Tested by 1

TestAuthServerFunction · 0.76