update
This commit is contained in:
@ -16,8 +16,19 @@ import (
|
||||
const (
|
||||
ContextUserID = "userID"
|
||||
ContextUsername = "username"
|
||||
// ContextTier 存放用户等级(free/vip),供详情接口据其拼装普通/高清图。
|
||||
ContextTier = "tier"
|
||||
)
|
||||
|
||||
// TierFree / TierVIP 用户等级枚举值。
|
||||
const (
|
||||
TierFree = "free"
|
||||
TierVIP = "vip"
|
||||
)
|
||||
|
||||
// IsVIP 判断等级是否为 VIP。
|
||||
func IsVIP(tier string) bool { return tier == TierVIP }
|
||||
|
||||
// bearerPrefix Authorization 头的令牌前缀。
|
||||
const bearerPrefix = "Bearer "
|
||||
|
||||
@ -46,6 +57,7 @@ func requireAuth(c *gin.Context, manager *jwt.Manager) {
|
||||
|
||||
c.Set(ContextUserID, claims.UserID)
|
||||
c.Set(ContextUsername, claims.Username)
|
||||
c.Set(ContextTier, claims.Tier)
|
||||
c.Next()
|
||||
}
|
||||
|
||||
@ -65,6 +77,7 @@ func PublicFirstPageAuth(manager *jwt.Manager) gin.HandlerFunc {
|
||||
if claims, err := manager.Parse(strings.TrimPrefix(header, bearerPrefix)); err == nil {
|
||||
c.Set(ContextUserID, claims.UserID)
|
||||
c.Set(ContextUsername, claims.Username)
|
||||
c.Set(ContextTier, claims.Tier)
|
||||
}
|
||||
}
|
||||
// 非首页:必须有有效 token,否则 401。
|
||||
@ -92,3 +105,13 @@ func UserIDFrom(c *gin.Context) (uint32, bool) {
|
||||
}
|
||||
return id, true
|
||||
}
|
||||
|
||||
// TierFrom 从 Context 取出当前用户等级;未登录(无 tier)回落 free。
|
||||
func TierFrom(c *gin.Context) string {
|
||||
if v, exists := c.Get(ContextTier); exists {
|
||||
if t, ok := v.(string); ok && t != "" {
|
||||
return t
|
||||
}
|
||||
}
|
||||
return TierFree
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user