src/Security/Doctrine/Entity/User.php line 27

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Security\Doctrine\Entity;
  4. use App\Notification\Doctrine\Entity\Notifier;
  5. use App\Security\Doctrine\Repository\UserRepository;
  6. use App\Security\Security\Store\Roles;
  7. use App\Security\Security\User\UserStatusInterface;
  8. use Doctrine\ORM\Mapping\Column;
  9. use Doctrine\ORM\Mapping\Entity;
  10. use Doctrine\ORM\Mapping\GeneratedValue;
  11. use Doctrine\ORM\Mapping\Id;
  12. use Doctrine\ORM\Mapping\Table;
  13. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  14. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  15. use Symfony\Component\Security\Core\User\UserInterface;
  16. use Symfony\Component\Uid\AbstractUid;
  17. use Symfony\Component\Validator\Constraints\Count as ArrayCount;
  18. use Symfony\Component\Validator\Constraints\Email;
  19. use Symfony\Component\Validator\Constraints\NotBlank;
  20. #[Entity(repositoryClassUserRepository::class)]
  21. #[Table(name'`user`')]
  22. #[UniqueEntity(fields: ['email'])]
  23. class User implements UserInterfacePasswordAuthenticatedUserInterfaceUserStatusInterface
  24. {
  25.     use Notifier;
  26.     #[Id]
  27.     #[Column(type'integer')]
  28.     #[GeneratedValue]
  29.     private ?int $id null;
  30.     #[Column(uniquetrue)]
  31.     #[NotBlank]
  32.     #[Email]
  33.     private string $email '';
  34.     #[Column]
  35.     private string $password '';
  36.     #[NotBlank(groups: ['reset-password''create'])]
  37.     private ?string $plainPassword null;
  38.     #[Column]
  39.     #[NotBlank]
  40.     private string $firstName '';
  41.     #[Column]
  42.     #[NotBlank]
  43.     private string $lastName '';
  44.     #[Column(type'uuid'nullabletrue)]
  45.     private ?AbstractUid $forgottenPasswordToken null;
  46.     #[Column(type'boolean')]
  47.     private bool $suspended false;
  48.     /**
  49.      * @var array<array-key, string> $roles
  50.      */
  51.     #[Column(type'array')]
  52.     #[ArrayCount(min1)]
  53.     private array $roles = [];
  54.     public function getId(): ?int
  55.     {
  56.         return $this->id;
  57.     }
  58.     public function getEmail(): string
  59.     {
  60.         return $this->email;
  61.     }
  62.     public function setEmail(string $email): void
  63.     {
  64.         $this->email $email;
  65.     }
  66.     public function getPlainPassword(): ?string
  67.     {
  68.         return $this->plainPassword;
  69.     }
  70.     public function setPlainPassword(?string $plainPassword): void
  71.     {
  72.         $this->plainPassword $plainPassword;
  73.     }
  74.     public function getFirstName(): string
  75.     {
  76.         return $this->firstName;
  77.     }
  78.     public function setFirstName(string $firstName): void
  79.     {
  80.         $this->firstName $firstName;
  81.     }
  82.     public function getLastName(): string
  83.     {
  84.         return $this->lastName;
  85.     }
  86.     public function setLastName(string $lastName): void
  87.     {
  88.         $this->lastName $lastName;
  89.     }
  90.     public function getForgottenPasswordToken(): ?AbstractUid
  91.     {
  92.         return $this->forgottenPasswordToken;
  93.     }
  94.     public function setForgottenPasswordToken(?AbstractUid $forgottenPasswordToken): void
  95.     {
  96.         $this->forgottenPasswordToken $forgottenPasswordToken;
  97.     }
  98.     public function isSuspended(): bool
  99.     {
  100.         return $this->suspended;
  101.     }
  102.     public function setSuspended(bool $suspended): void
  103.     {
  104.         $this->suspended $suspended;
  105.     }
  106.     /**
  107.      * @return array<array-key, string>
  108.      */
  109.     public function getRoles(): array
  110.     {
  111.         $roles array_merge($this->roles, [Roles::ROLE_USER]);
  112.         sort($roles);
  113.         return $roles;
  114.     }
  115.     /**
  116.      * @param array<array-key, string> $roles
  117.      */
  118.     public function setRoles(array $roles): void
  119.     {
  120.         $this->roles $roles;
  121.     }
  122.     public function getPassword(): string
  123.     {
  124.         return $this->password;
  125.     }
  126.     public function setPassword(string $password): void
  127.     {
  128.         $this->password $password;
  129.     }
  130.     public function getSalt(): ?string
  131.     {
  132.         return null;
  133.     }
  134.     public function eraseCredentials(): void
  135.     {
  136.         $this->plainPassword null;
  137.     }
  138.     public function getUsername(): string
  139.     {
  140.         return $this->email;
  141.     }
  142.     public function getFullName(): string
  143.     {
  144.         return sprintf('%s %s'$this->firstName$this->lastName);
  145.     }
  146.     public function getUserIdentifier(): string
  147.     {
  148.         return $this->email;
  149.     }
  150. }