diff --git a/src/Maker/MakeUser.php b/src/Maker/MakeUser.php index ddfd0721a..99a3114c5 100644 --- a/src/Maker/MakeUser.php +++ b/src/Maker/MakeUser.php @@ -162,7 +162,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen $manipulator->setIo($io); - $this->userClassBuilder->addUserInterfaceImplementation($manipulator, $userClassConfiguration); + $this->userClassBuilder->addUserInterfaceImplementation($manipulator, $userClassConfiguration, $userClassNameDetails->getShortName()); $generator->dumpFile($classPath, $manipulator->getSourceCode()); diff --git a/src/Security/UserClassBuilder.php b/src/Security/UserClassBuilder.php index f9074ef3c..fad369025 100644 --- a/src/Security/UserClassBuilder.php +++ b/src/Security/UserClassBuilder.php @@ -26,11 +26,11 @@ */ final class UserClassBuilder { - public function addUserInterfaceImplementation(ClassSourceManipulator $manipulator, UserClassConfiguration $userClassConfig): void + public function addUserInterfaceImplementation(ClassSourceManipulator $manipulator, UserClassConfiguration $userClassConfig, string $className): void { $manipulator->addInterface(UserInterface::class); - $this->addUniqueConstraint($manipulator, $userClassConfig); + $this->addUniqueConstraint($manipulator, $userClassConfig, $className); $this->addGetUsername($manipulator, $userClassConfig); @@ -332,7 +332,7 @@ private function addSerialize(ClassSourceManipulator $manipulator): void $manipulator->addMethodBuilder($builder); } - private function addUniqueConstraint(ClassSourceManipulator $manipulator, UserClassConfiguration $userClassConfig): void + private function addUniqueConstraint(ClassSourceManipulator $manipulator, UserClassConfiguration $userClassConfig, string $className): void { if (!$userClassConfig->isEntity()) { return; @@ -341,7 +341,7 @@ private function addUniqueConstraint(ClassSourceManipulator $manipulator, UserCl $manipulator->addAttributeToClass( 'ORM\\UniqueConstraint', [ - 'name' => 'UNIQ_IDENTIFIER_'.strtoupper(Str::asSnakeCase($userClassConfig->getIdentityPropertyName())), + 'name' => strtoupper(Str::asSnakeCase($className)).'_UNIQ_IDENTIFIER_'.strtoupper(Str::asSnakeCase($userClassConfig->getIdentityPropertyName())), 'fields' => [$userClassConfig->getIdentityPropertyName()], ] ); diff --git a/tests/Security/UserClassBuilderTest.php b/tests/Security/UserClassBuilderTest.php index c3197a886..eb0e50305 100644 --- a/tests/Security/UserClassBuilderTest.php +++ b/tests/Security/UserClassBuilderTest.php @@ -23,12 +23,12 @@ class UserClassBuilderTest extends TestCase /** * @dataProvider getUserInterfaceTests */ - public function testAddUserInterfaceImplementation(UserClassConfiguration $userClassConfig, string $expectedFilename): void + public function testAddUserInterfaceImplementation(UserClassConfiguration $userClassConfig, string $expectedFilename, string $className): void { $manipulator = $this->getClassSourceManipulator($userClassConfig); $classBuilder = new UserClassBuilder(); - $classBuilder->addUserInterfaceImplementation($manipulator, $userClassConfig); + $classBuilder->addUserInterfaceImplementation($manipulator, $userClassConfig, $className); $expectedPath = $this->getExpectedPath($expectedFilename, null); $expectedSource = file_get_contents($expectedPath); @@ -49,36 +49,43 @@ public function getUserInterfaceTests(): \Generator yield 'entity_with_email_as_identifier' => [ new UserClassConfiguration(true, 'email', true), 'UserEntityWithEmailAsIdentifier.php', + 'User', ]; yield 'entity_with_password' => [ new UserClassConfiguration(true, 'userIdentifier', true), 'UserEntityWithPassword.php', + 'User', ]; yield 'entity_with_user_identifier_as_identifier' => [ new UserClassConfiguration(true, 'user_identifier', true), 'UserEntityWithUser_IdentifierAsIdentifier.php', + 'User', ]; yield 'entity_without_password' => [ new UserClassConfiguration(true, 'userIdentifier', false), 'UserEntityWithoutPassword.php', + 'User', ]; yield 'model_with_email_as_identifier' => [ new UserClassConfiguration(false, 'email', true), 'UserModelWithEmailAsIdentifier.php', + 'User', ]; yield 'model_with_password' => [ new UserClassConfiguration(false, 'userIdentifier', true), 'UserModelWithPassword.php', + 'User', ]; yield 'model_without_password' => [ new UserClassConfiguration(false, 'userIdentifier', false), 'UserModelWithoutPassword.php', + 'User', ]; } diff --git a/tests/Security/fixtures/expected/UserEntityWithEmailAsIdentifier.php b/tests/Security/fixtures/expected/UserEntityWithEmailAsIdentifier.php index d5b389ff6..f8708bcdb 100644 --- a/tests/Security/fixtures/expected/UserEntityWithEmailAsIdentifier.php +++ b/tests/Security/fixtures/expected/UserEntityWithEmailAsIdentifier.php @@ -7,7 +7,7 @@ use Symfony\Component\Security\Core\User\UserInterface; #[ORM\Entity] -#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_EMAIL', fields: ['email'])] +#[ORM\UniqueConstraint(name: 'USER_UNIQ_IDENTIFIER_EMAIL', fields: ['email'])] class User implements UserInterface, PasswordAuthenticatedUserInterface { #[ORM\Id] diff --git a/tests/Security/fixtures/expected/UserEntityWithPassword.php b/tests/Security/fixtures/expected/UserEntityWithPassword.php index fcadefbc3..114574dbb 100644 --- a/tests/Security/fixtures/expected/UserEntityWithPassword.php +++ b/tests/Security/fixtures/expected/UserEntityWithPassword.php @@ -7,7 +7,7 @@ use Symfony\Component\Security\Core\User\UserInterface; #[ORM\Entity] -#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_USER_IDENTIFIER', fields: ['userIdentifier'])] +#[ORM\UniqueConstraint(name: 'USER_UNIQ_IDENTIFIER_USER_IDENTIFIER', fields: ['userIdentifier'])] class User implements UserInterface, PasswordAuthenticatedUserInterface { #[ORM\Id] diff --git a/tests/Security/fixtures/expected/UserEntityWithUser_IdentifierAsIdentifier.php b/tests/Security/fixtures/expected/UserEntityWithUser_IdentifierAsIdentifier.php index 49c9b78a8..20a1bafc3 100644 --- a/tests/Security/fixtures/expected/UserEntityWithUser_IdentifierAsIdentifier.php +++ b/tests/Security/fixtures/expected/UserEntityWithUser_IdentifierAsIdentifier.php @@ -7,7 +7,7 @@ use Symfony\Component\Security\Core\User\UserInterface; #[ORM\Entity] -#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_USER_IDENTIFIER', fields: ['user_identifier'])] +#[ORM\UniqueConstraint(name: 'USER_UNIQ_IDENTIFIER_USER_IDENTIFIER', fields: ['user_identifier'])] class User implements UserInterface, PasswordAuthenticatedUserInterface { #[ORM\Id] diff --git a/tests/Security/fixtures/expected/UserEntityWithoutPassword.php b/tests/Security/fixtures/expected/UserEntityWithoutPassword.php index 1f590957f..fd92df0fb 100644 --- a/tests/Security/fixtures/expected/UserEntityWithoutPassword.php +++ b/tests/Security/fixtures/expected/UserEntityWithoutPassword.php @@ -6,7 +6,7 @@ use Symfony\Component\Security\Core\User\UserInterface; #[ORM\Entity] -#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_USER_IDENTIFIER', fields: ['userIdentifier'])] +#[ORM\UniqueConstraint(name: 'USER_UNIQ_IDENTIFIER_USER_IDENTIFIER', fields: ['userIdentifier'])] class User implements UserInterface { #[ORM\Id]