improve user unique check (#3621)

This commit is contained in:
Kevin Papst
2022-11-06 14:15:21 +01:00
committed by GitHub
parent 3d0f480d9e
commit 6235d18dab
3 changed files with 6 additions and 7 deletions

View File

@@ -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(

View File

@@ -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);
} }
} }

View File

@@ -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();
} }
} }