paascloud/paascloud-master · error · UacBizException
UAC10011032
UAC10011032
Error message
邮箱不存在, loginName=%s,email=%s
What it means
UAC10011032 is thrown at the end of the reset-password token validation: after decrypting the token, countUserByLoginNameAndEmail(loginName, email) returns < 1, meaning no user row matches both the submitted login name and email. The token may be valid, but the form's loginName/email pair does not correspond to any account.
Solutions
- Confirm the pair exists: SELECT COUNT(*) FROM uac_user WHERE login_name = ? AND email = ?; fix the submitted values.
- Trim/lowercase the loginName/email inputs before countUserByLoginNameAndEmail.
- Use the 'forgot login name' flow to recover the correct pair instead of guessing.
- Return a user-facing message advising to check both fields; do not reveal which field mismatched.
Example fix
// before int count = this.countUserByLoginNameAndEmail(loginName, email); // after String ln = loginName == null ? null : loginName.trim(); String em = email == null ? null : email.trim().toLowerCase(); int count = this.countUserByLoginNameAndEmail(ln, em);
Defensive patterns
Strategy: validation
Validate before calling
int count = countUserByLoginNameAndEmail(loginName.trim(), email.trim().toLowerCase());
if (count < 1) {
return Result.fail("login name and email do not match any account");
} Try / catch
try {
resetPwdService.validateResetToken(loginName, email);
} catch (UacBizException e) {
if ("UAC10011032".equals(e.getCode())) { return Result.fail(400, "login name/email pair not found"); }
throw e;
} Prevention
- Trim and lowercase inputs before matching.
- Remind users which loginName is registered with each email (account-recovery flow).
- Don't reveal which field mismatched — return one generic message.
- Clean up deleted accounts' outstanding reset tokens to avoid confusing states.
When it happens
Trigger: User typed a loginName that differs from the one registered with that email (or vice versa); whitespace/case differences in the form values; the account was deleted after the code was issued; attempting reset on an environment whose DB lacks the user.
Common situations: Users with multiple accounts mixing up which loginName goes with which email; leading/trailing spaces from copy-paste; testing against a stale local DB.
Understand the failure class
Background: "User not found", "Invalid user", and "does not exist": what missing-user lookup errors mean across Rocket.Chat, LiteLLM, Phabricator, rustfs, and pnpm — this error's family across 10 libraries.
Related errors
AI-assisted analysis of paascloud/paascloud-master@781281a950 (2026-09-10).
Data as JSON: /api/errors/bc6ba13ca9252904.
Report an issue: GitHub.
Appendix: source
Thrown at paascloud-provider/paascloud-provider-uac/src/main/java/com/paascloud/provider/service/impl/UacUserServiceImpl.java:880
Preconditions.checkArgument(!StringUtils.isEmpty(email), ErrorCodeEnum.UAC10011018.msg());
Preconditions.checkArgument(!StringUtils.isEmpty(loginPwd), ErrorCodeEnum.UAC10011014.msg());
Preconditions.checkArgument(!StringUtils.isEmpty(forgetToken), "非法操作");
Preconditions.checkArgument(!StringUtils.isEmpty(emailCode), "验证码不能为空");
// 验证token
String key = RedisKeyUtil.getResetPwdTokenKey(email);
String forgetKey = redisService.getKey(key);
try {
HttpAesUtil.decrypt(forgetToken, forgetKey, false, forgetKey);
} catch (Exception e) {
throw new UacBizException(ErrorCodeEnum.UAC10011031);
}
int count = this.countUserByLoginNameAndEmail(loginName, email);
// 校验token
if (count < 1) {
throw new UacBizException(ErrorCodeEnum.UAC10011032, loginName, email);
}
}
/**
* 删除用户菜单表
*/
private int deleteUserMenuList(UacUserMenu uacUserMenu) {
int selCount = uacUserMenuMapper.selectCount(uacUserMenu);
// 如果查询结果为空, 默认认为已删除成功
if (selCount < 1) {
return 1;
}
int delCount = uacUserMenuMapper.delete(uacUserMenu);
if (delCount < selCount) {
logger.error("清空该用户常用菜单失败 delCount = {} selCount = {}", delCount, selCount);
throw new UacBizException(ErrorCodeEnum.UAC10011033);
}View on GitHub (pinned to 781281a950)