app-cloudep-portal-api-gateway/internal/logic/member/refresh_access_token_logic.go

56 lines
1.3 KiB
Go
Raw Normal View History

2024-08-26 06:36:58 +00:00
package member
import (
"app-cloudep-portal-api-gateway/internal/domain"
"context"
"time"
permissionRpc "code.30cm.net/digimon/proto-all/pkg/permission"
"app-cloudep-portal-api-gateway/internal/svc"
"app-cloudep-portal-api-gateway/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type RefreshAccessTokenLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewRefreshAccessTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RefreshAccessTokenLogic {
return &RefreshAccessTokenLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *RefreshAccessTokenLogic) RefreshAccessToken(req *types.UpdateTokenReq) (resp *types.LoginResp, err error) {
// TODO 看未來有沒有需要把UID 拿去驗證
token, err := l.svcCtx.TokenRpc.RefreshToken(l.ctx, &permissionRpc.RefreshTokenReq{
Token: req.Token,
Scope: domain.DefaultScope,
Expires: time.Now().UTC().Add(l.svcCtx.Config.Token.Expired).Unix(),
DeviceId: req.DeviceID,
})
if err != nil {
return nil, err
}
// 建立回應
return &types.LoginResp{
Status: types.Status{
Code: domain.SuccessCode,
Message: domain.SuccessMsg,
},
Data: types.LoginItem{
UID: req.UID,
AccessToken: token.Token,
RefreshToken: token.OneTimeToken,
TokenType: token.TokenType,
},
}, nil
}