37 lines
1.0 KiB
Go
37 lines
1.0 KiB
Go
|
package token
|
||
|
|
||
|
import (
|
||
|
"PersonalMain/api/request"
|
||
|
"PersonalMain/internal/model/do"
|
||
|
"PersonalMain/internal/service"
|
||
|
"PersonalMain/utility"
|
||
|
"context"
|
||
|
"github.com/gogf/gf/v2/frame/g"
|
||
|
"github.com/gogf/gf/v2/net/ghttp"
|
||
|
)
|
||
|
|
||
|
func (_ *ControllerV1) TokenCreate(ctx context.Context, _ *request.TokenCreateReq) (res *request.TokenCreateRes, err error) {
|
||
|
// 获取 Cookie 是否存在
|
||
|
req := ghttp.RequestFromCtx(ctx)
|
||
|
hasCookie := req.Cookie.Contains("token")
|
||
|
tokenService := service.NewTokenService()
|
||
|
var token *do.TokenDO
|
||
|
if hasCookie {
|
||
|
// 检查 Session 是否有效
|
||
|
token = tokenService.GetToken(req)
|
||
|
if tokenService.VerifyToken(token) {
|
||
|
// 有效则输出Token依然有效
|
||
|
utility.Success(req, "Token 依然有效", nil)
|
||
|
} else {
|
||
|
// 生成新的 Session
|
||
|
token = tokenService.CreateToken()
|
||
|
utility.Success(req, "Token 已重新生成", g.Map{"token": token.Token})
|
||
|
}
|
||
|
} else {
|
||
|
// 生成新的 Session
|
||
|
token = tokenService.CreateToken()
|
||
|
utility.Success(req, "Token 已生成", g.Map{"token": token.Token})
|
||
|
}
|
||
|
return res, err
|
||
|
}
|