31 lines
554 B
Go
31 lines
554 B
Go
package token
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
type TokenStore interface {
|
|
revoke(tokenID string, expiresAt time.Time) error
|
|
isRevoked(tokenID string) (bool, error)
|
|
}
|
|
|
|
type Service struct {
|
|
store TokenStore
|
|
}
|
|
|
|
func NewTokenService(store TokenStore) (*Service, error) {
|
|
if store == nil {
|
|
return nil, fmt.Errorf("store is nil")
|
|
}
|
|
return &Service{store: store}, nil
|
|
}
|
|
|
|
func (s *Service) Revoke(jti string, exp time.Time) error {
|
|
return s.store.revoke(jti, exp)
|
|
}
|
|
|
|
func (s *Service) IsRevoked(jti string) (bool, error) {
|
|
return s.store.isRevoked(jti)
|
|
}
|