Files
workspace/code/allapp/allapp-go/biz/handler/auth/token_service.go
T
2026-01-13 22:18:01 +08:00

61 lines
1.2 KiB
Go

// Code generated by hertz generator.
package auth
import (
"allapp/utils/errorx"
"allapp/utils/jwtx"
"allapp/utils/response"
"context"
auth "allapp/biz/model/auth"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/protocol/consts"
)
// RefreshAccessToken .
// @router /auth/refresh/token [GET]
func RefreshAccessToken(ctx context.Context, c *app.RequestContext) {
var err error
var req auth.RefreshAccessTokenReq
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
refreshToken := string(c.GetHeader("refreshToken"))
if refreshToken == "" {
response.Fail(c).
Code(response.HttpCode.Unauthorized).
Send()
return
}
tokenResult := jwtx.VerifyToken(refreshToken)
if !tokenResult.IsValid || tokenResult.IsExpired {
// Refresh Token 无效或过期,需要重新登录
response.Fail(c).
Code(response.HttpCode.Unauthorized).
Send()
return
}
userID := tokenResult.Claims.UserID
// 生成新的 Access Token
newAccessToken, err := jwtx.CreateAccessToken(userID)
if err != nil {
errorx.AddError(c, err)
return
}
resp := new(auth.RefreshAccessTokenResp)
resp.AccessToken = newAccessToken
response.Success(c).
Data(resp).
Send()
}