1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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
- }
- }
|