Мне нужно проверить, уникальна ли электронная почта , но что не должна включать электронную почту пользователя, который запрашивает .
Для редактирования профиля, когда пользователь редактирует профиль без изменения своего адреса электронной почты (например, user@example.com), он выдает уникальное сообщение об ошибке, добавленное пользовательской проверкой @UniqueCheckEmail
.
Класс модели:
public class UserProfileRequest {
private String firstName;
private String lastName;
@NotBlank(message = "Email is required")
@Email(message = "Email is invalid")
@Column(unique = true)
@UniqueCheckEmail // Custom validation
private String email;
Класс ограничений валидатора:
public class EmailConstraintValidator implements ConstraintValidator<UniqueCheckEmail, String> {
/* other code */
@Override
public boolean isValid(String email, ConstraintValidatorContext context) {
boolean status = true;
try {
Optional<UserInfo> userInfo = userInfoService.findByEmail(email);
logger.info(userInfo.toString());
logger.info("User email present? " + userInfo.isPresent());
status = !userInfo.isPresent();
} catch (NullPointerException e) {
//logger.info("Email NullPointerException --> " + e.getMessage());
} catch (Exception e) {
//logger.info("Email unique check Exception --> " + e.getMessage());
}
if (!status) {
String messageTemplate = "Email already exists";
context.buildConstraintViolationWithTemplate(messageTemplate)
.addConstraintViolation()
.disableDefaultConstraintViolation();
}
return status;
}
}
Можно ли как-нибудь получить токен JWT и данные пользователя в этом методе isValid
?
Любая помощь будет оценена. Заранее спасибо!