diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/UserService.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/UserService.java index e891839..0ef49a9 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/UserService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/UserService.java @@ -12,6 +12,7 @@ import jakarta.ws.rs.ClientErrorException; import jakarta.ws.rs.NotAuthorizedException; import jakarta.ws.rs.NotFoundException; import jakarta.ws.rs.core.Response; + import org.apache.commons.validator.routines.EmailValidator; import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; import org.jboss.resteasy.client.jaxrs.internal.ResteasyClientBuilderImpl; @@ -78,17 +79,13 @@ public class UserService { } String username = StringUtils.isEmpty(user.getUsername()) ? user.getEmail() : user.getUsername(); - if (!this.getTenantUsersResource().search(username, true).isEmpty()) { - throw new ResponseStatusException(HttpStatus.CONFLICT, "User with this username already exists"); + if (!this.getTenantUsersResource().search(username, true).isEmpty() || !this.getTenantUsersResource().searchByEmail(user.getEmail(), true).isEmpty()) { + throw new ResponseStatusException(HttpStatus.CONFLICT, "User with this username or email address already exists"); } if (!EmailValidator.getInstance().isValid(user.getEmail())) { throw new ResponseStatusException(HttpStatus.CONFLICT, "Email address format is not valid"); } - // also search by email in case the username was provided at creation - if (!StringUtils.isEmpty(user.getUsername()) && !this.getTenantUsersResource().searchByEmail(user.getEmail(), true).isEmpty()) { - throw new ResponseStatusException(HttpStatus.CONFLICT, "User with this email already exists"); - } tenantUserManagementProperties.getKcRoleMapping().validateRoles(user.getRoles());