Files
stat_center/middleware/define/define.go
T
2026-05-20 16:13:58 +08:00

70 lines
1.3 KiB
Go

package define
import (
"fmt"
"stat/common/log"
"stat/common/utils"
"stat/statg"
"time"
)
type ActType = string
const (
Admin ActType = "admin"
Channel ActType = "channel"
District ActType = "district"
ActTypeNone ActType = ""
)
type Claims struct {
Type ActType
Name string `json:"name"`
Role string `json:"role"`
CID string `json:"cid"`
ShowMagic string `json:"showMagic"`
}
type claimsWithExp struct {
Claims
Exp int64 `json:"exp"`
}
var (
NoToken = fmt.Errorf("no token")
RepeatLogin = fmt.Errorf("repeat login")
)
const (
WebTokenExpire = 10 * 24 * time.Hour
)
func GetTokenSecret() string {
return statg.Conf.JwtKey
}
func GenToken(claims *Claims) (string, error) {
c := claimsWithExp{Claims: *claims, Exp: time.Now().Add(WebTokenExpire).Unix()}
secret := GetTokenSecret()
args, _ := utils.JSONStruct2Map(c)
token, err := utils.CreateToken(secret, args)
if err != nil {
log.Error("auth web GenToken error", log.Any("claims", claims), log.E(err))
}
return token, err
}
func ParseToken(token string) (*claimsWithExp, error) {
secret := GetTokenSecret()
claims, err := utils.ParseToken(secret, token)
if err != nil {
return nil, err
}
c := claimsWithExp{}
err = utils.Map2JSONStruct(&c, claims)
if err != nil {
return nil, err
}
return &c, nil
}