Documentation
¶
Overview ¶
jwt.go
Index ¶
- Constants
- Variables
- func ContainsAnyValue(slice []string, values ...string) bool
- func ContainsValue(slice []string, value string) bool
- func GetAudience(claims map[string]any) []string
- func GetBool(data map[string]any, key string) bool
- func GetExpiration(claims map[string]any) time.Time
- func GetFloat64(data map[string]any, key string) float64
- func GetInt(data map[string]any, key string) int
- func GetInt64(data map[string]any, key string) int64
- func GetIssuedAt(claims map[string]any) time.Time
- func GetIssuer(claims map[string]any) string
- func GetMap(data map[string]any, key string) map[string]any
- func GetNotBefore(claims map[string]any) time.Time
- func GetPayload(claims map[string]any) map[string]any
- func GetPayloadBool(claims map[string]any, key string) bool
- func GetPayloadInt(claims map[string]any, key string) int
- func GetPayloadString(claims map[string]any, key string) string
- func GetPayloadStringSlice(claims map[string]any, key string) []string
- func GetString(data map[string]any, key string) string
- func GetStringSlice(data map[string]any, key string) []string
- func GetSubject(claims map[string]any) string
- func GetTokenID(claims map[string]any) string
- func HasPayloadValue(claims map[string]any, key string) bool
- func IsAccessToken(claims map[string]any) bool
- func IsRefreshToken(claims map[string]any) bool
- func IsTokenActive(claims map[string]any) bool
- func IsTokenExpired(claims map[string]any) bool
- func IsTokenStale(claims map[string]any, staleDuration time.Duration) bool
- func ValidateTokenTiming(claims map[string]any) error
- func ValidateTokenType(claims map[string]any, expectedType string) error
- type Config
- type TokenConfig
- type TokenError
- type TokenManager
- func (tm *TokenManager) DecodeToken(tokenString string) (map[string]any, error)
- func (tm *TokenManager) GenerateAccessToken(jti string, payload map[string]any, configs ...*TokenConfig) (string, error)
- func (tm *TokenManager) GenerateRefreshToken(jti string, payload map[string]any, configs ...*TokenConfig) (string, error)
- func (tm *TokenManager) GenerateRegisterToken(jti string, payload map[string]any, subject string, configs ...*TokenConfig) (string, error)
- func (tm *TokenManager) GetPayload(tokenString string) (map[string]any, error)
- func (tm *TokenManager) GetSecret() string
- func (tm *TokenManager) GetTokenExpiry(tokenString string) (time.Time, error)
- func (tm *TokenManager) IsTokenExpired(tokenString string) bool
- func (tm *TokenManager) RefreshTokenIfNeeded(tokenString string, refreshThreshold time.Duration) (string, bool, error)
- func (tm *TokenManager) SetAccessTokenExpiry(expiry time.Duration)
- func (tm *TokenManager) SetRefreshTokenExpiry(expiry time.Duration)
- func (tm *TokenManager) SetRegisterTokenExpiry(expiry time.Duration)
- func (tm *TokenManager) SetSecret(secret string)
- func (tm *TokenManager) ValidateToken(tokenString string) (*jwtstd.Token, error)
- type TokenValidator
Constants ¶
const ( DefaultAccessTokenExpire = 2 * time.Hour // 2 hours DefaultRefreshTokenExpire = 7 * 24 * time.Hour // 7 days DefaultRegisterTokenExpire = 30 * time.Minute // 30 minutes )
Default token expiration constants
const ( ErrNeedTokenProvider = TokenError("token provider required") ErrInvalidToken = TokenError("invalid token") ErrTokenExpired = TokenError("token expired") ErrTokenParsing = TokenError("token parsing error") )
Error constants
Variables ¶
var ProviderSet = wire.NewSet( ProvideTokenManager, wire.Bind(new(TokenValidator), new(*TokenManager)), )
ProviderSet is the wire provider set for the jwt package. It provides *TokenManager for JWT operations.
Usage:
wire.Build(
jwt.ProviderSet,
// ... other providers
)
Functions ¶
func ContainsAnyValue ¶
ContainsAnyValue checks if a slice contains any of the specified values
func ContainsValue ¶
ContainsValue checks if a slice contains a specific value
func GetAudience ¶
GetAudience extracts audience (aud) from token claims
func GetExpiration ¶
GetExpiration extracts expiration time from token claims
func GetFloat64 ¶
GetFloat64 safely extracts float64 value from any map
func GetIssuedAt ¶
GetIssuedAt extracts issued at time from token claims
func GetNotBefore ¶
GetNotBefore extracts not before time from token claims
func GetPayload ¶
GetPayload extracts payload from token claims
func GetPayloadBool ¶
GetPayloadBool extracts boolean value from payload
func GetPayloadInt ¶
GetPayloadInt extracts int value from payload
func GetPayloadString ¶
GetPayloadString extracts string value from payload
func GetPayloadStringSlice ¶
GetPayloadStringSlice extracts string slice from payload
func GetStringSlice ¶
GetStringSlice safely extracts string slice from any map
func GetSubject ¶
GetSubject extracts subject (sub) from token claims
func GetTokenID ¶
GetTokenID extracts JWT ID (jti) from token claims
func HasPayloadValue ¶
HasPayloadValue checks if payload contains a specific key with non-empty value
func IsAccessToken ¶
IsAccessToken checks if token is an access token
func IsRefreshToken ¶
IsRefreshToken checks if token is a refresh token
func IsTokenActive ¶
IsTokenActive checks if token is currently active (not before current time)
func IsTokenExpired ¶
IsTokenExpired checks if token is expired based on claims
func IsTokenStale ¶
IsTokenStale checks if token is older than specified duration
func ValidateTokenTiming ¶
ValidateTokenTiming validates token timing (exp, iat, nbf)
Types ¶
type Config ¶ added in v0.2.0
type Config struct {
Secret string
AccessTokenExpiry string
RefreshTokenExpiry string
RegisterTokenExpiry string
}
Config represents JWT configuration for Wire injection. This is used to configure the TokenManager via dependency injection.
type TokenConfig ¶
type TokenConfig struct {
// For TokenManager configuration
AccessTokenExpiry time.Duration
RefreshTokenExpiry time.Duration
RegisterTokenExpiry time.Duration
// For individual token generation
Expiry time.Duration
}
TokenConfig represents token configuration options
type TokenError ¶
type TokenError string
TokenError represents JWT token related errors
func (TokenError) Error ¶
func (e TokenError) Error() string
type TokenManager ¶
type TokenManager struct {
// contains filtered or unexported fields
}
TokenManager handles JWT token operations
func NewTokenManager ¶
func NewTokenManager(secret string, configs ...*TokenConfig) *TokenManager
NewTokenManager creates a new TokenManager instance with optional configuration
func ProvideTokenManager ¶ added in v0.2.0
func ProvideTokenManager(cfg *Config) *TokenManager
ProvideTokenManager creates a new TokenManager from configuration. The secret is required; other settings use defaults if not specified.
func ProvideTokenManagerFromSecret ¶ added in v0.2.0
func ProvideTokenManagerFromSecret(secret string) *TokenManager
ProvideTokenManagerFromSecret creates a TokenManager directly from a secret string. This is a convenience provider for simple use cases.
func (*TokenManager) DecodeToken ¶
func (tm *TokenManager) DecodeToken(tokenString string) (map[string]any, error)
DecodeToken decodes a JWT token and returns its claims
func (*TokenManager) GenerateAccessToken ¶
func (tm *TokenManager) GenerateAccessToken(jti string, payload map[string]any, configs ...*TokenConfig) (string, error)
GenerateAccessToken generates an access token with optional custom expiry
func (*TokenManager) GenerateRefreshToken ¶
func (tm *TokenManager) GenerateRefreshToken(jti string, payload map[string]any, configs ...*TokenConfig) (string, error)
GenerateRefreshToken generates a refresh token with optional custom expiry
func (*TokenManager) GenerateRegisterToken ¶
func (tm *TokenManager) GenerateRegisterToken(jti string, payload map[string]any, subject string, configs ...*TokenConfig) (string, error)
GenerateRegisterToken generates a register token with optional custom expiry
func (*TokenManager) GetPayload ¶
func (tm *TokenManager) GetPayload(tokenString string) (map[string]any, error)
GetPayload extracts the payload from token claims
func (*TokenManager) GetSecret ¶
func (tm *TokenManager) GetSecret() string
GetSecret returns the JWT secret
func (*TokenManager) GetTokenExpiry ¶
func (tm *TokenManager) GetTokenExpiry(tokenString string) (time.Time, error)
GetTokenExpiry returns the expiry time of a token
func (*TokenManager) IsTokenExpired ¶
func (tm *TokenManager) IsTokenExpired(tokenString string) bool
IsTokenExpired checks if a token is expired
func (*TokenManager) RefreshTokenIfNeeded ¶
func (tm *TokenManager) RefreshTokenIfNeeded(tokenString string, refreshThreshold time.Duration) (string, bool, error)
RefreshTokenIfNeeded refreshes token if it's close to expiry
func (*TokenManager) SetAccessTokenExpiry ¶
func (tm *TokenManager) SetAccessTokenExpiry(expiry time.Duration)
SetAccessTokenExpiry sets the default access token expiry
func (*TokenManager) SetRefreshTokenExpiry ¶
func (tm *TokenManager) SetRefreshTokenExpiry(expiry time.Duration)
SetRefreshTokenExpiry sets the default refresh token expiry
func (*TokenManager) SetRegisterTokenExpiry ¶
func (tm *TokenManager) SetRegisterTokenExpiry(expiry time.Duration)
SetRegisterTokenExpiry sets the default register token expiry
func (*TokenManager) SetSecret ¶
func (tm *TokenManager) SetSecret(secret string)
SetSecret sets the JWT secret
func (*TokenManager) ValidateToken ¶
func (tm *TokenManager) ValidateToken(tokenString string) (*jwtstd.Token, error)
ValidateToken validates a JWT token and returns the parsed token
type TokenValidator ¶ added in v0.2.0
type TokenValidator interface {
ValidateToken(tokenString string) (any, error)
DecodeToken(tokenString string) (map[string]any, error)
IsTokenExpired(tokenString string) bool
}
TokenValidator is an interface for validating JWT tokens. This allows for easier testing and dependency injection.