1234567891011121314151617181920212223242526272829303132333435 |
- package auth
- import (
- "context"
- "errors"
- )
- // TokenResponse represents the response containing both access and refresh tokens
- type TokenResponse struct {
- AccessToken string `json:"access_token"`
- RefreshToken string `json:"refresh_token"`
- ExpiresIn int64 `json:"expires_in"` // Expiration time in seconds
- TokenType string `json:"token_type"` // Usually "Bearer"
- }
- var (
- ErrTokenExpired = errors.New("token has expired")
- ErrInvalidToken = errors.New("token is invalid")
- ErrTokenBlacklisted = errors.New("token has been revoked")
- )
- // Service defines the interface for authentication operations
- type Service interface {
- // GenerateToken creates new access and refresh tokens for a user
- GenerateToken(ctx context.Context, clientID string, role string) (*TokenResponse, error)
- // ValidateToken verifies a token and returns the client ID if valid
- ValidateToken(ctx context.Context, token string) (string, error)
- // RefreshToken creates a new access token based on a valid refresh token
- RefreshToken(ctx context.Context, refreshToken string) (*TokenResponse, error)
- // Logout invalidates both access and refresh tokens
- Logout(ctx context.Context, token string) error
- }
|