Browse Source

update admin's canonical username on subdomain change

Olivier Massot 10 months ago
parent
commit
425f5fe58a
2 changed files with 18 additions and 1 deletions
  1. 14 0
      src/Entity/Person/Person.php
  2. 4 1
      src/Service/Typo3/SubdomainService.php

+ 14 - 0
src/Entity/Person/Person.php

@@ -39,6 +39,9 @@ class Person implements UserInterface, PasswordAuthenticatedUserInterface
     #[ORM\Column(length: 180, unique: true, nullable: true)]
     private ?string $username = null;
 
+    #[ORM\Column(length: 180, unique: true, nullable: true)]
+    private ?string $usernameCanonical = null;
+
     /** @var string[]|null */
     private ?array $roles = [];
 
@@ -134,6 +137,17 @@ class Person implements UserInterface, PasswordAuthenticatedUserInterface
         return (string) $this->username;
     }
 
+    public function getUsernameCanonical(): ?string
+    {
+        return $this->usernameCanonical;
+    }
+
+    public function setUsernameCanonical(?string $usernameCanonical): self
+    {
+        $this->usernameCanonical = $usernameCanonical;
+        return $this;
+    }
+
     public function setUsername(?string $username): self
     {
         $this->username = $username;

+ 4 - 1
src/Service/Typo3/SubdomainService.php

@@ -205,7 +205,10 @@ class SubdomainService
     {
         $adminAccess = $this->accessRepository->findAdminAccess($subdomain->getOrganization());
 
-        $adminAccess->getPerson()->setUsername('admin'.$subdomain->getSubdomain());
+        $person = $adminAccess->getPerson();
+        $newUsername = 'admin'.$subdomain->getSubdomain();
+        $person->setUsername($newUsername);
+        $person->setUsernameCanonical($newUsername);
         $this->em->flush();
     }