Documentation
¶
Overview ¶
jwt.go
Index ¶
- Constants
- 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 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)
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 ¶
This section is empty.
Functions ¶
func ContainsAnyValue ¶ added in v0.1.7
ContainsAnyValue checks if a slice contains any of the specified values
func ContainsValue ¶ added in v0.1.7
ContainsValue checks if a slice contains a specific value
func GetAudience ¶ added in v0.1.7
GetAudience extracts audience (aud) from token claims
func GetExpiration ¶ added in v0.1.7
GetExpiration extracts expiration time from token claims
func GetFloat64 ¶ added in v0.1.7
GetFloat64 safely extracts float64 value from any map
func GetIssuedAt ¶ added in v0.1.7
GetIssuedAt extracts issued at time from token claims
func GetNotBefore ¶ added in v0.1.7
GetNotBefore extracts not before time from token claims
func GetPayload ¶ added in v0.1.7
GetPayload extracts payload from token claims
func GetPayloadBool ¶ added in v0.1.7
GetPayloadBool extracts boolean value from payload
func GetPayloadInt ¶ added in v0.1.7
GetPayloadInt extracts int value from payload
func GetPayloadString ¶ added in v0.1.7
GetPayloadString extracts string value from payload
func GetPayloadStringSlice ¶ added in v0.1.7
GetPayloadStringSlice extracts string slice from payload
func GetStringSlice ¶ added in v0.1.7
GetStringSlice safely extracts string slice from any map
func GetSubject ¶ added in v0.1.7
GetSubject extracts subject (sub) from token claims
func GetTokenID ¶ added in v0.1.7
GetTokenID extracts JWT ID (jti) from token claims
func HasPayloadValue ¶ added in v0.1.7
HasPayloadValue checks if payload contains a specific key with non-empty value
func IsAccessToken ¶ added in v0.1.4
IsAccessToken checks if token is an access token
func IsRefreshToken ¶ added in v0.1.4
IsRefreshToken checks if token is a refresh token
func IsTokenActive ¶ added in v0.1.7
IsTokenActive checks if token is currently active (not before current time)
func IsTokenExpired ¶ added in v0.1.7
IsTokenExpired checks if token is expired based on claims
func IsTokenStale ¶ added in v0.1.4
IsTokenStale checks if token is older than specified duration
func ValidateTokenTiming ¶ added in v0.1.7
ValidateTokenTiming validates token timing (exp, iat, nbf)
Types ¶
type TokenConfig ¶ added in v0.1.8
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 ¶ added in v0.1.2
type TokenManager struct {
// contains filtered or unexported fields
}
TokenManager handles JWT token operations
func NewTokenManager ¶ added in v0.1.2
func NewTokenManager(secret string, configs ...*TokenConfig) *TokenManager
NewTokenManager creates a new TokenManager instance with optional configuration
func (*TokenManager) DecodeToken ¶ added in v0.1.2
func (tm *TokenManager) DecodeToken(tokenString string) (map[string]any, error)
DecodeToken decodes a JWT token and returns its claims
func (*TokenManager) GenerateAccessToken ¶ added in v0.1.2
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 ¶ added in v0.1.2
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 ¶ added in v0.1.2
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 ¶ added in v0.1.7
func (tm *TokenManager) GetPayload(tokenString string) (map[string]any, error)
GetPayload extracts the payload from token claims
func (*TokenManager) GetSecret ¶ added in v0.1.10
func (tm *TokenManager) GetSecret() string
GetSecret returns the JWT secret
func (*TokenManager) GetTokenExpiry ¶ added in v0.1.4
func (tm *TokenManager) GetTokenExpiry(tokenString string) (time.Time, error)
GetTokenExpiry returns the expiry time of a token
func (*TokenManager) IsTokenExpired ¶ added in v0.1.2
func (tm *TokenManager) IsTokenExpired(tokenString string) bool
IsTokenExpired checks if a token is expired
func (*TokenManager) RefreshTokenIfNeeded ¶ added in v0.1.4
func (tm *TokenManager) RefreshTokenIfNeeded(tokenString string, refreshThreshold time.Duration) (string, bool, error)
RefreshTokenIfNeeded refreshes token if it's close to expiry
func (*TokenManager) SetAccessTokenExpiry ¶ added in v0.1.8
func (tm *TokenManager) SetAccessTokenExpiry(expiry time.Duration)
SetAccessTokenExpiry sets the default access token expiry
func (*TokenManager) SetRefreshTokenExpiry ¶ added in v0.1.8
func (tm *TokenManager) SetRefreshTokenExpiry(expiry time.Duration)
SetRefreshTokenExpiry sets the default refresh token expiry
func (*TokenManager) SetRegisterTokenExpiry ¶ added in v0.1.8
func (tm *TokenManager) SetRegisterTokenExpiry(expiry time.Duration)
SetRegisterTokenExpiry sets the default register token expiry
func (*TokenManager) SetSecret ¶ added in v0.1.10
func (tm *TokenManager) SetSecret(secret string)
SetSecret sets the JWT secret
func (*TokenManager) ValidateToken ¶ added in v0.1.2
func (tm *TokenManager) ValidateToken(tokenString string) (*jwtstd.Token, error)
ValidateToken validates a JWT token and returns the parsed token