代码拉取完成,页面将自动刷新
同步操作将从 pixel/gin-vue-admin 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package utils
import (
"gitee.com/g-qs/fudun/server/global"
"gitee.com/g-qs/fudun/server/model/manager"
"gitee.com/g-qs/fudun/server/model/system"
systemReq "gitee.com/g-qs/fudun/server/model/system/request"
"gitee.com/g-qs/fudun/server/model/user"
"github.com/gin-gonic/gin"
"github.com/gofrs/uuid/v5"
"net"
"time"
)
func ClearToken(c *gin.Context) {
// 增加cookie x-token 向来源的web添加
host, _, err := net.SplitHostPort(c.Request.Host)
if err != nil {
host = c.Request.Host
}
if net.ParseIP(host) != nil {
c.SetCookie("x-token", "", -1, "/", "", false, false)
} else {
c.SetCookie("x-token", "", -1, "/", host, false, false)
}
}
func SetToken(c *gin.Context, token string, maxAge int) {
// 增加cookie x-token 向来源的web添加
host, _, err := net.SplitHostPort(c.Request.Host)
if err != nil {
host = c.Request.Host
}
if net.ParseIP(host) != nil {
c.SetCookie("x-token", token, maxAge, "/", "", false, false)
} else {
c.SetCookie("x-token", token, maxAge, "/", host, false, false)
}
}
func GetToken(c *gin.Context) string {
token := c.Request.Header.Get("x-token")
if token == "" {
j := NewJWT()
token, _ = c.Cookie("x-token")
claims, err := j.ParseToken(token)
if err != nil {
global.GVA_LOG.Error("重新写入cookie token失败,未能成功解析token,请检查请求头是否存在x-token且claims是否为规定结构")
return token
}
SetToken(c, token, int((claims.ExpiresAt.Unix()-time.Now().Unix())/60))
}
return token
}
func GetClaims(c *gin.Context) (*systemReq.CustomClaims, error) {
token := GetToken(c)
j := NewJWT()
claims, err := j.ParseToken(token)
if err != nil {
global.GVA_LOG.Error("从Gin的Context中获取从jwt解析信息失败, 请检查请求头是否存在x-token且claims是否为规定结构")
}
return claims, err
}
// GetUserID 从Gin的Context中获取从jwt解析出来的用户ID
func GetUserID(c *gin.Context) uint {
if claims, exists := c.Get("claims"); !exists {
if cl, err := GetClaims(c); err != nil {
return 0
} else {
return cl.BaseClaims.ID
}
} else {
waitUse := claims.(*systemReq.CustomClaims)
return waitUse.BaseClaims.ID
}
}
// GetHmID 从Gin的Context中获取从jwt解析出来的健管师ID
func GetHmID(c *gin.Context) uint {
if claims, exists := c.Get("claims"); !exists {
if cl, err := GetClaims(c); err != nil {
return 0
} else {
return cl.BaseClaims.HmID
}
} else {
waitUse := claims.(*systemReq.CustomClaims)
return waitUse.BaseClaims.HmID
}
}
// GetUserUuid 从Gin的Context中获取从jwt解析出来的用户UUID
func GetUserUuid(c *gin.Context) uuid.UUID {
if claims, exists := c.Get("claims"); !exists {
if cl, err := GetClaims(c); err != nil {
return uuid.UUID{}
} else {
return cl.UUID
}
} else {
waitUse := claims.(*systemReq.CustomClaims)
return waitUse.UUID
}
}
// GetUserAuthorityId 从Gin的Context中获取从jwt解析出来的用户角色id
func GetUserAuthorityId(c *gin.Context) uint {
if claims, exists := c.Get("claims"); !exists {
if cl, err := GetClaims(c); err != nil {
return 0
} else {
return cl.AuthorityId
}
} else {
waitUse := claims.(*systemReq.CustomClaims)
return waitUse.AuthorityId
}
}
// GetUserInfo 从Gin的Context中获取从jwt解析出来的用户角色id
func GetUserInfo(c *gin.Context) *systemReq.CustomClaims {
if claims, exists := c.Get("claims"); !exists {
if cl, err := GetClaims(c); err != nil {
return nil
} else {
return cl
}
} else {
waitUse := claims.(*systemReq.CustomClaims)
return waitUse
}
}
// GetUserName 从Gin的Context中获取从jwt解析出来的用户名
func GetUserName(c *gin.Context) string {
if claims, exists := c.Get("claims"); !exists {
if cl, err := GetClaims(c); err != nil {
return ""
} else {
return cl.Username
}
} else {
waitUse := claims.(*systemReq.CustomClaims)
return waitUse.Username
}
}
func LoginToken(user system.Login) (token string, claims systemReq.CustomClaims, err error) {
j := &JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名
claims = j.CreateClaims(systemReq.BaseClaims{
UUID: user.GetUUID(),
ID: user.GetUserId(),
NickName: user.GetNickname(),
Username: user.GetUsername(),
AuthorityId: user.GetAuthorityId(),
})
token, err = j.CreateToken(claims)
if err != nil {
return
}
return
}
func LoginTokenC(user user.Login) (token string, claims systemReq.CustomClaims, err error) {
j := &JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名
claims = j.CreateClaims(systemReq.BaseClaims{
UUID: user.GetUUID(),
ID: user.GetUserId(),
NickName: user.GetName(),
AuthorityId: user.GetAuthorityId(),
})
token, err = j.CreateToken(claims)
if err != nil {
return
}
return
}
func LoginTokenB(manager manager.Login) (token string, claims systemReq.CustomClaims, err error) {
j := &JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名
claims = j.CreateClaims(systemReq.BaseClaims{
HmID: manager.GetHmId(),
NickName: manager.GetName(),
Phone: manager.GetPhone(),
AuthorityId: manager.GetAuthorityId(),
})
token, err = j.CreateToken(claims)
if err != nil {
return
}
return
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。