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

  1. Confirm the pair exists: SELECT COUNT(*) FROM uac_user WHERE login_name = ? AND email = ?; fix the submitted values.
  2. Trim/lowercase the loginName/email inputs before countUserByLoginNameAndEmail.
  3. Use the 'forgot login name' flow to recover the correct pair instead of guessing.
  4. 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

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)