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 }