package tokenservicelogic import ( ers "code.30cm.net/wanderland/library-go/errors" "context" "ark-permission/gen_result/pb/permission" "ark-permission/internal/svc" "github.com/zeromicro/go-zero/core/logx" ) type CancelTokenByUidLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewCancelTokenByUidLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CancelTokenByUidLogic { return &CancelTokenByUidLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } type deleteByTokenIDs struct { UID string `json:"uid" binding:"required"` IDs []string `json:"ids" binding:"required"` } // CancelTokenByUid 取消 Token (取消這個用戶從不同 Device 登入的所有 Token),也包含他裡面的 One Time Toke func (l *CancelTokenByUidLogic) CancelTokenByUid(in *permission.DoTokenByUIDReq) (*permission.OKResp, error) { // 驗證所需 if err := l.svcCtx.Validate.ValidateAll(&deleteByTokenIDs{ UID: in.GetUid(), IDs: in.GetIds(), }); err != nil { return nil, ers.InvalidFormat(err.Error()) } err := l.svcCtx.TokenRedisRepo.DeleteUIDToken(l.ctx, in.GetUid(), in.GetIds()) if err != nil { return nil, err } return &permission.OKResp{}, nil }