Documentation
¶
Index ¶
- type BlacklistedToken
- type Claims
- type DatabaseJWTService
- func (j *DatabaseJWTService) BlacklistToken(tokenString string) error
- func (j *DatabaseJWTService) ExtractTokenFromHeader(authHeader string) (string, error)
- func (j *DatabaseJWTService) GenerateTokenPair(user *userModel.User) (*TokenPair, error)
- func (j *DatabaseJWTService) GetBlacklistedTokenCount() (int64, error)
- func (j *DatabaseJWTService) GetUserFromToken(tokenString string) (*userModel.User, error)
- func (j *DatabaseJWTService) IsTokenBlacklisted(tokenString string) bool
- func (j *DatabaseJWTService) RefreshToken(refreshToken string, user *userModel.User) (string, error)
- func (j *DatabaseJWTService) ValidateToken(tokenString string) (*Claims, error)
- type DatabaseTokenBlacklist
- func (dtb *DatabaseTokenBlacklist) BlacklistToken(token string, expiresAt time.Time) error
- func (dtb *DatabaseTokenBlacklist) ClearExpiredTokens() error
- func (dtb *DatabaseTokenBlacklist) GetBlacklistedCount() (int64, error)
- func (dtb *DatabaseTokenBlacklist) GetExpiredTokenCount() (int64, error)
- func (dtb *DatabaseTokenBlacklist) GetTotalTokenCount() (int64, error)
- func (dtb *DatabaseTokenBlacklist) IsTokenBlacklisted(token string) bool
- type JWTService
- func (j *JWTService) BlacklistToken(tokenString string) error
- func (j *JWTService) ExtractTokenFromHeader(authHeader string) (string, error)
- func (j *JWTService) GenerateTokenPair(user *userModel.User) (*TokenPair, error)
- func (j *JWTService) GetBlacklistedTokenCount() (int64, error)
- func (j *JWTService) GetUserFromToken(tokenString string) (*userModel.User, error)
- func (j *JWTService) IsTokenBlacklisted(tokenString string) bool
- func (j *JWTService) RefreshToken(refreshToken string, user *userModel.User) (string, error)
- func (j *JWTService) ValidateToken(tokenString string) (*Claims, error)
- type JWTServiceInterface
- type RedisTokenBlacklist
- func (rtb *RedisTokenBlacklist) BlacklistToken(token string, expiresAt time.Time) error
- func (rtb *RedisTokenBlacklist) ClearExpiredTokens() error
- func (rtb *RedisTokenBlacklist) CloseConnection() error
- func (rtb *RedisTokenBlacklist) GetBlacklistedCount() (int64, error)
- func (rtb *RedisTokenBlacklist) IsTokenBlacklisted(token string) bool
- type TokenPair
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BlacklistedToken ¶
type BlacklistedToken struct { model.Base TokenHash string `gorm:"uniqueIndex;not null" json:"token_hash"` ExpiresAt time.Time `gorm:"not null;index" json:"expires_at"` Token string `gorm:"-" json:"-"` // Don't store the actual token }
BlacklistedToken represents a blacklisted token in the database
type DatabaseJWTService ¶
type DatabaseJWTService struct {
// contains filtered or unexported fields
}
DatabaseJWTService uses database for token blacklisting instead of Redis
func NewDatabaseJWTService ¶
func NewDatabaseJWTService(secretKey string, tokenExpiry, refreshExpiry time.Duration, db *gorm.DB) *DatabaseJWTService
NewDatabaseJWTService creates a JWT service that uses database for token storage
func (*DatabaseJWTService) BlacklistToken ¶
func (j *DatabaseJWTService) BlacklistToken(tokenString string) error
BlacklistToken adds a token to the blacklist
func (*DatabaseJWTService) ExtractTokenFromHeader ¶
func (j *DatabaseJWTService) ExtractTokenFromHeader(authHeader string) (string, error)
ExtractTokenFromHeader extracts JWT token from Authorization header
func (*DatabaseJWTService) GenerateTokenPair ¶
func (j *DatabaseJWTService) GenerateTokenPair(user *userModel.User) (*TokenPair, error)
GenerateTokenPair generates both access and refresh tokens for a user
func (*DatabaseJWTService) GetBlacklistedTokenCount ¶
func (j *DatabaseJWTService) GetBlacklistedTokenCount() (int64, error)
GetBlacklistedTokenCount returns the number of blacklisted tokens
func (*DatabaseJWTService) GetUserFromToken ¶
func (j *DatabaseJWTService) GetUserFromToken(tokenString string) (*userModel.User, error)
GetUserFromToken extracts user information from token claims
func (*DatabaseJWTService) IsTokenBlacklisted ¶
func (j *DatabaseJWTService) IsTokenBlacklisted(tokenString string) bool
IsTokenBlacklisted checks if a token is blacklisted
func (*DatabaseJWTService) RefreshToken ¶
func (j *DatabaseJWTService) RefreshToken(refreshToken string, user *userModel.User) (string, error)
RefreshToken generates a new access token from a valid refresh token
func (*DatabaseJWTService) ValidateToken ¶
func (j *DatabaseJWTService) ValidateToken(tokenString string) (*Claims, error)
ValidateToken validates a JWT token and returns the claims
type DatabaseTokenBlacklist ¶
type DatabaseTokenBlacklist struct {
// contains filtered or unexported fields
}
DatabaseTokenBlacklist manages blacklisted JWT tokens using database
func NewDatabaseTokenBlacklist ¶
func NewDatabaseTokenBlacklist(db *gorm.DB) *DatabaseTokenBlacklist
NewDatabaseTokenBlacklist creates a new database-based token blacklist
func (*DatabaseTokenBlacklist) BlacklistToken ¶
func (dtb *DatabaseTokenBlacklist) BlacklistToken(token string, expiresAt time.Time) error
BlacklistToken adds a token to the database blacklist with expiration
func (*DatabaseTokenBlacklist) ClearExpiredTokens ¶
func (dtb *DatabaseTokenBlacklist) ClearExpiredTokens() error
ClearExpiredTokens removes expired tokens from the database
func (*DatabaseTokenBlacklist) GetBlacklistedCount ¶
func (dtb *DatabaseTokenBlacklist) GetBlacklistedCount() (int64, error)
GetBlacklistedCount returns the number of active blacklisted tokens
func (*DatabaseTokenBlacklist) GetExpiredTokenCount ¶
func (dtb *DatabaseTokenBlacklist) GetExpiredTokenCount() (int64, error)
GetExpiredTokenCount returns the number of expired tokens that can be cleaned up
func (*DatabaseTokenBlacklist) GetTotalTokenCount ¶
func (dtb *DatabaseTokenBlacklist) GetTotalTokenCount() (int64, error)
GetTotalTokenCount returns the total number of tokens in the blacklist (including expired)
func (*DatabaseTokenBlacklist) IsTokenBlacklisted ¶
func (dtb *DatabaseTokenBlacklist) IsTokenBlacklisted(token string) bool
IsTokenBlacklisted checks if a token is in the database blacklist
type JWTService ¶
type JWTService struct {
// contains filtered or unexported fields
}
func NewJWTService ¶
func NewJWTService(secretKey string, tokenExpiry, refreshExpiry time.Duration, redisClient *redis.Client) *JWTService
func (*JWTService) BlacklistToken ¶
func (j *JWTService) BlacklistToken(tokenString string) error
BlacklistToken adds a token to the blacklist
func (*JWTService) ExtractTokenFromHeader ¶
func (j *JWTService) ExtractTokenFromHeader(authHeader string) (string, error)
ExtractTokenFromHeader extracts JWT token from Authorization header
func (*JWTService) GenerateTokenPair ¶
func (j *JWTService) GenerateTokenPair(user *userModel.User) (*TokenPair, error)
GenerateTokenPair generates both access and refresh tokens for a user
func (*JWTService) GetBlacklistedTokenCount ¶
func (j *JWTService) GetBlacklistedTokenCount() (int64, error)
GetBlacklistedTokenCount returns the number of blacklisted tokens
func (*JWTService) GetUserFromToken ¶
func (j *JWTService) GetUserFromToken(tokenString string) (*userModel.User, error)
GetUserFromToken extracts user information from token claims
func (*JWTService) IsTokenBlacklisted ¶
func (j *JWTService) IsTokenBlacklisted(tokenString string) bool
IsTokenBlacklisted checks if a token is blacklisted
func (*JWTService) RefreshToken ¶
RefreshToken generates a new access token from a valid refresh token
func (*JWTService) ValidateToken ¶
func (j *JWTService) ValidateToken(tokenString string) (*Claims, error)
ValidateToken validates a JWT token and returns the claims
type JWTServiceInterface ¶
type JWTServiceInterface interface { GenerateTokenPair(user *userModel.User) (*TokenPair, error) ValidateToken(tokenString string) (*Claims, error) RefreshToken(refreshToken string, user *userModel.User) (string, error) BlacklistToken(tokenString string) error IsTokenBlacklisted(tokenString string) bool ExtractTokenFromHeader(authHeader string) (string, error) GetUserFromToken(tokenString string) (*userModel.User, error) }
JWTServiceInterface defines the interface for JWT operations
func NewJWTServiceFactory ¶
func NewJWTServiceFactory(secretKey string, tokenExpiry, refreshExpiry time.Duration, redisClient *redis.Client, db *gorm.DB) JWTServiceInterface
NewJWTServiceFactory creates JWT service based on environment configuration
type RedisTokenBlacklist ¶
type RedisTokenBlacklist struct {
// contains filtered or unexported fields
}
RedisTokenBlacklist manages blacklisted JWT tokens using Redis
func NewRedisTokenBlacklist ¶
func NewRedisTokenBlacklist(client *redis.Client, prefix string) *RedisTokenBlacklist
NewRedisTokenBlacklist creates a new Redis-based token blacklist
func (*RedisTokenBlacklist) BlacklistToken ¶
func (rtb *RedisTokenBlacklist) BlacklistToken(token string, expiresAt time.Time) error
BlacklistToken adds a token to the Redis blacklist with TTL based on expiration
func (*RedisTokenBlacklist) ClearExpiredTokens ¶
func (rtb *RedisTokenBlacklist) ClearExpiredTokens() error
ClearExpiredTokens manually removes expired tokens (Redis TTL handles this automatically) This method is mainly for compatibility and monitoring
func (*RedisTokenBlacklist) CloseConnection ¶
func (rtb *RedisTokenBlacklist) CloseConnection() error
CloseConnection closes the Redis connection
func (*RedisTokenBlacklist) GetBlacklistedCount ¶
func (rtb *RedisTokenBlacklist) GetBlacklistedCount() (int64, error)
GetBlacklistedCount returns the number of blacklisted tokens in Redis
func (*RedisTokenBlacklist) IsTokenBlacklisted ¶
func (rtb *RedisTokenBlacklist) IsTokenBlacklisted(token string) bool
IsTokenBlacklisted checks if a token is in the Redis blacklist