src/Entity/User.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\UserRepository;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. /**
  8.  * @ORM\Entity(repositoryClass=UserRepository::class)
  9.  * @ORM\Table(name="user", schema="bdnf", options={"comment":"Contient les utilisateurs du site"})
  10.  */
  11. class User implements UserInterfacePasswordAuthenticatedUserInterface
  12. {
  13.     public function __toString()
  14.     {
  15.         return $this->getFirstname() . ' ' $this->getLastname();
  16.     }
  17.     public function toArray(): array
  18.     {
  19.         return [
  20.             'id' => $this->getId(),
  21.             'firstName' => $this->getFirstName(),
  22.             'lastName' => $this->getLastName(),
  23.             'email' => $this->getEmail(),
  24.             'lastUpdate' => $this->getLastUpdate(),
  25.             'uid' => $this->getUid(),
  26.         ];
  27.     }
  28.     /**
  29.      * @ORM\Id
  30.      * @ORM\GeneratedValue
  31.      * @ORM\Column(type="integer", options={"comment":"Identifiant unique de l'utilisateur"})
  32.      */
  33.     private $id;
  34.     /**
  35.      * @ORM\Column(type="json", options={"comment":"Rôles de l'utilisateur"})
  36.      */
  37.     private array $roles = [];
  38.     /**
  39.      * @ORM\Column(type="boolean", options={"comment":"Etat du compte de l'utilisateur"})
  40.      */
  41.     private bool $active true;
  42.     private mixed $plainPassword null;
  43.     /**
  44.      * @ORM\Column(type="string", length=255, options={"comment":"Mot de passe de l'utilisateur"})
  45.      */
  46.     private ?string $password;
  47.     /**
  48.      * @ORM\Column(type="string", length=255, options={"comment":"Prénom de l'utilisateur"})
  49.      */
  50.     private ?string $firstname;
  51.     /**
  52.      * @ORM\Column(type="string", length=255, options={"comment":"Nom de l'utilisateur"})
  53.      */
  54.     private ?string $lastname;
  55.     /**
  56.      * @ORM\Column(type="string", length=255, unique=true, options={"comment":"Email de l'utilisateur"})
  57.      */
  58.     private ?string $email;
  59.     /**
  60.      * @ORM\Column(type="datetime", nullable=true, options={"comment":"Date de la dernière mise à jour de l'utilisateur"})
  61.      */
  62.     private mixed $lastUpdate;
  63.     /**
  64.      * @ORM\Column(type="string", nullable=true, options={"comment":"Identifiant unique de l'utilisateur"})
  65.      */
  66.     private ?string $uid;
  67.     /**
  68.      * @return mixed
  69.      */
  70.     public function getLastUpdate(): mixed
  71.     {
  72.         return $this->lastUpdate;
  73.     }
  74.     /**
  75.      * @param mixed $lastUpdate
  76.      */
  77.     public function setLastUpdate(mixed $lastUpdate): void
  78.     {
  79.         $this->lastUpdate $lastUpdate;
  80.     }
  81.     public function getId(): ?int
  82.     {
  83.         return $this->id;
  84.     }
  85.     public function getUsername(): ?string
  86.     {
  87.         return $this->email;
  88.     }
  89.     public function getFirstname(): ?string
  90.     {
  91.         return $this->firstname;
  92.     }
  93.     public function setFirstname(string $firstname): self
  94.     {
  95.         $this->firstname $firstname;
  96.         return $this;
  97.     }
  98.     public function getLastname(): ?string
  99.     {
  100.         return $this->lastname;
  101.     }
  102.     public function setLastname(string $lastname): self
  103.     {
  104.         $this->lastname $lastname;
  105.         return $this;
  106.     }
  107.     public function getActive(): ?bool
  108.     {
  109.         return $this->active;
  110.     }
  111.     public function setActive(bool $active): self
  112.     {
  113.         $this->active $active;
  114.         return $this;
  115.     }
  116.     /**
  117.      * @return bool
  118.      */
  119.     public function getAccountActive(): bool
  120.     {
  121.         return $this->active;
  122.     }
  123.     /**
  124.      * @param mixed $accountActive
  125.      */
  126.     public function setAccountActive(mixed $accountActive): void
  127.     {
  128.         $this->active $accountActive;
  129.     }
  130.     public function getEmail(): ?string
  131.     {
  132.         return $this->email;
  133.     }
  134.     public function setEmail(string $email): self
  135.     {
  136.         $this->email $email;
  137.         return $this;
  138.     }
  139.     /**
  140.      * @see UserInterface
  141.      */
  142.     public function getRoles(): array
  143.     {
  144.         $roles $this->roles;
  145.         // guarantee every user at least has ROLE_USER
  146.         $roles[] = 'ROLE_USER';
  147.         return array_unique($roles);
  148.     }
  149.     public function isAdmin(): bool
  150.     {
  151.         $roles $this->getRoles();
  152.         return (in_array('ROLE_ADMIN'$roles) || in_array('ROLE_SUPER_ADMIN'$roles));
  153.     }
  154.     public function setAdmin(bool $bool): self
  155.     {
  156.         $roles $this->getRoles();
  157.         if ($bool) {
  158.             $roles[] = "ROLE_ADMIN";
  159.         } else {
  160.             $roles array_diff($roles, ["ROLE_ADMIN"]);
  161.         }
  162.         $this->setRoles($roles);
  163.         return $this;
  164.     }
  165.     /**
  166.      * @return mixed
  167.      */
  168.     public function getPlainPassword(): mixed
  169.     {
  170.         return $this->plainPassword;
  171.     }
  172.     /**
  173.      * @param mixed $plainPassword
  174.      * @return User
  175.      */
  176.     public function setPlainPassword(mixed $plainPassword): self
  177.     {
  178.         $this->plainPassword $plainPassword;
  179.         $this->setLastUpdate(new \DateTime('now'));
  180.         return $this;
  181.     }
  182.     /**
  183.      * @see UserInterface
  184.      */
  185.     public function getPassword(): ?string
  186.     {
  187.         return $this->password;
  188.     }
  189.     public function setPassword(string $password): self
  190.     {
  191.         $this->password $password;
  192.         return $this;
  193.     }
  194.     /**
  195.      * This method can be removed in Symfony 6.0 - is not needed for apps that do not check user passwords.
  196.      *
  197.      * @see UserInterface
  198.      */
  199.     public function getSalt(): ?string
  200.     {
  201.         return null;
  202.     }
  203.     /**
  204.      * @see UserInterface
  205.      */
  206.     public function eraseCredentials()
  207.     {
  208.         // If you store any temporary, sensitive data on the user, clear it here
  209.         // $this->plainPassword = null;
  210.     }
  211.     public function getUserIdentifier(): string
  212.     {
  213.         return $this->email;
  214.     }
  215.     public function setRoles(array $roles): self
  216.     {
  217.         $this->roles $roles;
  218.         return $this;
  219.     }
  220.     public function getUid(): ?string
  221.     {
  222.         return $this->uid;
  223.     }
  224.     public function setUid($uid): static
  225.     {
  226.         $this->uid $uid;
  227.         return $this;
  228.     }
  229. }