12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package auth
- import (
- "context"
- "time"
- "github.com/golang-jwt/jwt"
- )
- // Claims represents the JWT claims structure
- type Claims struct {
- jwt.StandardClaims
- ClientID string `json:"client_id"`
- Role string `json:"role"`
- }
- // JWTService implements the auth.Service interface using JWT tokens
- type JWTService struct {
- privateKey []byte
- tokenDuration time.Duration
- tokenStore TokenStore // Interface for blacklist storage
- }
- // TokenStore defines storage operations for token management
- type TokenStore interface {
- IsBlacklisted(ctx context.Context, token string) (bool, error)
- Blacklist(ctx context.Context, token string, expiry time.Time) error
- }
- // NewJWTService creates a new JWT-based auth service
- func NewJWTService(privateKey []byte, tokenDuration time.Duration, store TokenStore) Service {
- return &JWTService{
- privateKey: privateKey,
- tokenDuration: tokenDuration,
- tokenStore: store,
- }
- }
- // Implementation of Service interface methods...
- func (s *JWTService) GenerateToken(ctx context.Context, clientID string) (string, error) {
- // Implementation here
- return "", nil
- }
- func (s *JWTService) ValidateToken(ctx context.Context, token string) (string, error) {
- // Implementation here
- return "", nil
- }
- func (s *JWTService) RefreshToken(ctx context.Context, token string) (string, error) {
- // Implementation here
- return "", nil
- }
- func (s *JWTService) Logout(ctx context.Context, token string) error {
- // Implementation here
- return nil
- }
|