package client import ( "github.com/druidcaesa/gotool" "strings" "ulink-admin/config" "ulink-admin/frame" "ulink-admin/modules/system/models/model" "ulink-admin/pkg/base" "ulink-admin/pkg/cache" ) type UserUtils struct { } // GetUserInfo 通过jwt获取当前登录用户 func GetUserInfo(c *frame.Context) *model.SysMember { token := c.Request.Header.Get("Authorization") if token == "" { return nil } s := strings.Split(token, " ") if len(s) != 2 { return nil } // 解析token包含的信息 claims := getJWTCustomClaims(s[1]) if claims == nil { return nil } info := claims.UserInfo return info } func GetJWTRedisKey(c *frame.Context) string { token := c.Request.Header.Get("Authorization") s := strings.Split(token, " ") // 解析token包含的信息 claims := getJWTCustomClaims(s[1]) if claims == nil { return "" } return claims.RedisKey } func GetToken(key string) (string, error) { switch config.GetJwtConfig().Cache { case "db": case "memory": tokenInfo := cache.GetToken(key) if tokenInfo != nil { return tokenInfo.Token, nil } case "redis": return base.RedisDB.GET(key) } return "", nil } // SaveRedisToken 将token存入到redis func SaveRedisToken(token string) { server := config.GetServerCfg() if server.Lock == "1" { claims := getJWTCustomClaims(token) switch config.GetJwtConfig().Cache { case "db": case "memory": cache.SaveToken(claims.RedisKey, claims.RedisTimeOut, token) case "redis": _, err := base.RedisDB.SETEX(claims.RedisKey, claims.RedisTimeOut, token) if err != nil { println(err.Error()) } } } } func getJWTCustomClaims(token string) *CustomClaims { j := NewJWT() // parseToken 解析token包含的信息 claims, err := j.ParseToken(token) if err != nil { gotool.Logs.ErrorLog().Println(err) return nil } return claims } // CheckIsAdmin 判断是否是超级管理员 func CheckIsAdmin(user *model.SysUser) bool { if user.Id == 1 { return true } else { return false } }