package member import ( "biz-member-gateway/internal/domain" "context" "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member" "code.30cm.net/digimon/library-go/errs" memberRPC "code.30cm.net/digimon/proto-all/pkg/member" permissionProto "code.30cm.net/digimon/proto-all/pkg/permission" "biz-member-gateway/internal/svc" "biz-member-gateway/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type ModifyPasswdLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } // NewModifyPasswdLogic 修改密碼 func NewModifyPasswdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ModifyPasswdLogic { return &ModifyPasswdLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *ModifyPasswdLogic) ModifyPasswd(req *types.ModifyPasswdReq) (*types.RespOK, error) { account := domain.Account(l.ctx) // 檢查是否有此帳號 _, err := l.svcCtx.MemberRPC.GetUIDByAccount(l.ctx, &memberRPC.GetUIDByAccountReq{ Account: account, }) if err != nil { return nil, err } if req.NewToken != req.NewTokenCheck { return nil, errs.InvalidFormat("failed to check token") } // 更新 _, err = l.svcCtx.MemberRPC.UpdateUserToken(l.ctx, &memberRPC.UpdateTokenReq{ Account: account, Token: req.NewToken, Platform: member.Digimon.ToInt64(), }) if err != nil { return nil, err } // 登出所有,請使用者中新登入 -> 射後不理,因為已經更新成功了 _, _ = l.svcCtx.TokenRPC.CancelToken(l.ctx, &permissionProto.CancelTokenReq{ Token: req.Token, }) return &types.RespOK{}, nil }