IssueUserAuthToken generates and persists a new auth token for a user.
(ctx context.Context, userID, clientID, displayName string, representingUserID *string, ttl *time.Duration, refresh bool)
| 49 | |
| 50 | // IssueUserAuthToken generates and persists a new auth token for a user. |
| 51 | func (s *Service) IssueUserAuthToken(ctx context.Context, userID, clientID, displayName string, representingUserID *string, ttl *time.Duration, refresh bool) (AuthToken, error) { |
| 52 | tkn := authtoken.NewRandom(authtoken.TypeUser) |
| 53 | |
| 54 | var expiresOn *time.Time |
| 55 | if ttl != nil { |
| 56 | t := time.Now().Add(*ttl) |
| 57 | expiresOn = &t |
| 58 | } |
| 59 | |
| 60 | uat, err := s.DB.InsertUserAuthToken(ctx, &database.InsertUserAuthTokenOptions{ |
| 61 | ID: tkn.ID.String(), |
| 62 | SecretHash: tkn.SecretHash(), |
| 63 | UserID: userID, |
| 64 | AuthClientID: &clientID, |
| 65 | DisplayName: displayName, |
| 66 | RepresentingUserID: representingUserID, |
| 67 | Refresh: refresh, |
| 68 | ExpiresOn: expiresOn, |
| 69 | }) |
| 70 | if err != nil { |
| 71 | return nil, err |
| 72 | } |
| 73 | |
| 74 | return &userAuthToken{model: uat, token: tkn}, nil |
| 75 | } |
| 76 | |
| 77 | // serviceAuthToken implements AuthToken for tokens belonging to a service. |
| 78 | type serviceAuthToken struct { |
nothing calls this directly
no test coverage detected