improve user unique check (#3621)
This commit is contained in:
@@ -35,7 +35,7 @@ use Symfony\Component\Validator\Constraints as Assert;
|
|||||||
* )
|
* )
|
||||||
* @UniqueEntity("username")
|
* @UniqueEntity("username")
|
||||||
* @UniqueEntity("email")
|
* @UniqueEntity("email")
|
||||||
* @Constraints\User(groups={"UserCreate", "Registration", "Default"})
|
* @Constraints\User(groups={"UserCreate", "Registration", "Default", "Profile"})
|
||||||
*
|
*
|
||||||
* @Serializer\ExclusionPolicy("all")
|
* @Serializer\ExclusionPolicy("all")
|
||||||
* @Serializer\VirtualProperty(
|
* @Serializer\VirtualProperty(
|
||||||
|
|||||||
@@ -44,15 +44,14 @@ class UserValidator extends ConstraintValidator
|
|||||||
|
|
||||||
protected function validateUser(UserEntity $user, ExecutionContextInterface $context)
|
protected function validateUser(UserEntity $user, ExecutionContextInterface $context)
|
||||||
{
|
{
|
||||||
$matchedEmail = false;
|
|
||||||
if ($user->getEmail() !== null) {
|
if ($user->getEmail() !== null) {
|
||||||
$this->validateEmailExists($user->getId(), $user->getEmail(), 'email', User::USER_EXISTING_EMAIL, $context);
|
$this->validateEmailExists($user->getId(), $user->getEmail(), 'email', User::USER_EXISTING_EMAIL, $context);
|
||||||
$this->validateEmailExists($user->getId(), $user->getUsername(), 'username', User::USER_EXISTING_NAME_AS_EMAIL, $context);
|
$this->validateUsernameExists($user->getId(), $user->getEmail(), 'email', User::USER_EXISTING_EMAIL_AS_NAME, $context);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($user->getUsername() !== null) {
|
if ($user->getUsername() !== null) {
|
||||||
|
$this->validateEmailExists($user->getId(), $user->getUsername(), 'username', User::USER_EXISTING_NAME_AS_EMAIL, $context);
|
||||||
$this->validateUsernameExists($user->getId(), $user->getUsername(), 'username', User::USER_EXISTING_NAME, $context);
|
$this->validateUsernameExists($user->getId(), $user->getUsername(), 'username', User::USER_EXISTING_NAME, $context);
|
||||||
$this->validateUsernameExists($user->getId(), $user->getEmail(), 'email', User::USER_EXISTING_EMAIL_AS_NAME, $context);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,15 +92,15 @@ class UserValidatorTest extends ConstraintValidatorTestCase
|
|||||||
->buildViolation('The email is already used.')
|
->buildViolation('The email is already used.')
|
||||||
->atPath('property.path.email')
|
->atPath('property.path.email')
|
||||||
->setCode(User::USER_EXISTING_EMAIL)
|
->setCode(User::USER_EXISTING_EMAIL)
|
||||||
|
->buildNextViolation('An equal username is already used.')
|
||||||
|
->atPath('property.path.email')
|
||||||
|
->setCode(User::USER_EXISTING_EMAIL_AS_NAME)
|
||||||
->buildNextViolation('An equal email is already used.')
|
->buildNextViolation('An equal email is already used.')
|
||||||
->atPath('property.path.username')
|
->atPath('property.path.username')
|
||||||
->setCode(User::USER_EXISTING_NAME_AS_EMAIL)
|
->setCode(User::USER_EXISTING_NAME_AS_EMAIL)
|
||||||
->buildNextViolation('The username is already used.')
|
->buildNextViolation('The username is already used.')
|
||||||
->atPath('property.path.username')
|
->atPath('property.path.username')
|
||||||
->setCode(User::USER_EXISTING_NAME)
|
->setCode(User::USER_EXISTING_NAME)
|
||||||
->buildNextViolation('An equal username is already used.')
|
|
||||||
->atPath('property.path.email')
|
|
||||||
->setCode(User::USER_EXISTING_EMAIL_AS_NAME)
|
|
||||||
->assertRaised();
|
->assertRaised();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user