61 lines
1.2 KiB
Go
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()
|
|
}
|