@@ -14,17 +14,17 @@ const jtiLength = 21
1414type service struct {
1515 config Config
1616
17- revoked * RevokedStorage
17+ tokens * Repository
1818
1919 idFactory func () string
2020}
2121
22- func New (config Config , revoked * RevokedStorage ) (Service , error ) {
22+ func New (config Config , tokens * Repository ) (Service , error ) {
2323 if err := config .Validate (); err != nil {
2424 return nil , err
2525 }
2626
27- if revoked == nil {
27+ if tokens == nil {
2828 return nil , fmt .Errorf ("%w: revoked storage is required" , ErrInitFailed )
2929 }
3030
@@ -36,13 +36,13 @@ func New(config Config, revoked *RevokedStorage) (Service, error) {
3636 return & service {
3737 config : config ,
3838
39- revoked : revoked ,
39+ tokens : tokens ,
4040
4141 idFactory : idFactory ,
4242 }, nil
4343}
4444
45- func (s * service ) GenerateToken (userID string , scopes []string , ttl time.Duration ) (* TokenInfo , error ) {
45+ func (s * service ) GenerateToken (ctx context. Context , userID string , scopes []string , ttl time.Duration ) (* TokenInfo , error ) {
4646 if userID == "" {
4747 return nil , fmt .Errorf ("%w: user id is required" , ErrInvalidConfig )
4848 }
@@ -78,6 +78,10 @@ func (s *service) GenerateToken(userID string, scopes []string, ttl time.Duratio
7878 return nil , fmt .Errorf ("failed to sign token: %w" , err )
7979 }
8080
81+ if err := s .tokens .Insert (ctx , newTokenModel (claims .ID , claims .UserID , claims .ExpiresAt .Time )); err != nil {
82+ return nil , fmt .Errorf ("failed to insert token: %w" , err )
83+ }
84+
8185 return & TokenInfo {ID : claims .ID , AccessToken : signedToken , ExpiresAt : claims .ExpiresAt .Time }, nil
8286}
8387
@@ -102,9 +106,9 @@ func (s *service) ParseToken(ctx context.Context, token string) (*Claims, error)
102106 return nil , ErrInvalidToken
103107 }
104108
105- revoked , err := s .revoked .IsRevoked (ctx , claims .ID )
109+ revoked , err := s .tokens .IsRevoked (ctx , claims .ID )
106110 if err != nil {
107- return nil , fmt . Errorf ( "failed to check if token is revoked: %w" , err )
111+ return nil , err
108112 }
109113 if revoked {
110114 return nil , ErrTokenRevoked
@@ -113,6 +117,6 @@ func (s *service) ParseToken(ctx context.Context, token string) (*Claims, error)
113117 return claims , nil
114118}
115119
116- func (s * service ) RevokeToken (ctx context.Context , jti string ) error {
117- return s .revoked .Revoke (ctx , jti , s . config . TTL )
120+ func (s * service ) RevokeToken (ctx context.Context , userID , jti string ) error {
121+ return s .tokens .Revoke (ctx , jti , userID )
118122}
0 commit comments