src/Entity/User/User.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Entity\User;
  3. use App\Entity\Project\Project;
  4. use App\Entity\Request\RequestComment;
  5. use App\Entity\Request\RequestForm;
  6. use App\Entity\Request\RequestHistory;
  7. use App\Repository\User\UserRepository;
  8. use Doctrine\Common\Collections\ArrayCollection;
  9. use Doctrine\Common\Collections\Collection;
  10. use Doctrine\DBAL\Types\Types;
  11. use Doctrine\ORM\Mapping as ORM;
  12. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  13. use Symfony\Component\Security\Core\User\UserInterface;
  14. #[ORM\Entity(repositoryClassUserRepository::class)]
  15. class User implements UserInterfacePasswordAuthenticatedUserInterface
  16. {
  17.     const ROLE_SUPER_ADMIN ='ROLE_SUPER_ADMIN';
  18.     const ROLE_ADMIN 'ROLE_ADMIN';
  19.     const ROLE_PM 'ROLE_PM';
  20.     
  21.     #[ORM\Id]
  22.     #[ORM\GeneratedValue]
  23.     #[ORM\Column]
  24.     private ?int $id null;
  25.     #[ORM\Column(length180uniquetrue)]
  26.     private ?string $email null;
  27.     #[ORM\Column]
  28.     private array $roles = [];
  29.     /**
  30.      * @var string The hashed password
  31.      */
  32.     #[ORM\Column(nullabletrue)]
  33.     private ?string $password null;
  34.     #[ORM\Column(typeTypes::DATETIME_MUTABLEnullabletrue)]
  35.     private ?\DateTimeInterface $deletedAt null;
  36.     #[ORM\Column(length255nullabletrue)]
  37.     private ?string $firstName null;
  38.     #[ORM\Column(length255nullabletrue)]
  39.     private ?string $lastName null;
  40.     #[ORM\Column(length255nullabletrue)]
  41.     private ?string $phone null;
  42.     #[ORM\Column(nullabletrue)]
  43.     private ?bool $isEnable null;
  44.     #[ORM\OneToMany(mappedBy'user'targetEntityRequestHistory::class)]
  45.     private Collection $requestHistories;
  46.     #[ORM\OneToMany(mappedBy'user'targetEntityProject::class)]
  47.     private Collection $projects;
  48.     #[ORM\OneToMany(mappedBy'user'targetEntityRequestComment::class)]
  49.     private Collection $requestComments;
  50.     #[ORM\OneToMany(mappedBy'user'targetEntityRequestForm::class)]
  51.     private Collection $requestForms;
  52.     #[ORM\Column(length255nullabletrue)]
  53.     private ?string $role null;
  54.     public function __construct()
  55.     {
  56.         $this->requestHistories = new ArrayCollection();
  57.         $this->projects = new ArrayCollection();
  58.         $this->requestComments = new ArrayCollection();
  59.         $this->requestForms = new ArrayCollection();
  60.     }
  61.     public function getId(): ?int
  62.     {
  63.         return $this->id;
  64.     }
  65.     public function getEmail(): ?string
  66.     {
  67.         return $this->email;
  68.     }
  69.     public function setEmail(string $email): self
  70.     {
  71.         $this->email $email;
  72.         return $this;
  73.     }
  74.     /**
  75.      * A visual identifier that represents this user.
  76.      *
  77.      * @see UserInterface
  78.      */
  79.     public function getUserIdentifier(): string
  80.     {
  81.         return (string) $this->email;
  82.     }
  83.     /**
  84.      * @deprecated since Symfony 5.3, use getUserIdentifier instead
  85.      */
  86.     public function getUsername(): string
  87.     {
  88.         return (string) $this->email;
  89.     }
  90.     /**
  91.      * @see UserInterface
  92.      */
  93.     public function getRoles(): array
  94.     {
  95.         $roles $this->roles;
  96.         // guarantee every user at least has ROLE_USER
  97.         $roles[] = 'ROLE_USER';
  98.         return array_unique($roles);
  99.     }
  100.     public function setRoles(array $roles): self
  101.     {
  102.         $this->roles $roles;
  103.         return $this;
  104.     }
  105.     /**
  106.      * @see PasswordAuthenticatedUserInterface
  107.      */
  108.     public function getPassword(): string
  109.     {
  110.         return $this->password;
  111.     }
  112.     public function setPassword(string $password): self
  113.     {
  114.         $this->password $password;
  115.         return $this;
  116.     }
  117.     /**
  118.      * Returning a salt is only needed, if you are not using a modern
  119.      * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
  120.      *
  121.      * @see UserInterface
  122.      */
  123.     public function getSalt(): ?string
  124.     {
  125.         return null;
  126.     }
  127.     /**
  128.      * @see UserInterface
  129.      */
  130.     public function eraseCredentials()
  131.     {
  132.         // If you store any temporary, sensitive data on the user, clear it here
  133.         // $this->plainPassword = null;
  134.     }
  135.     public function getDeletedAt(): ?\DateTimeInterface
  136.     {
  137.         return $this->deletedAt;
  138.     }
  139.     public function setDeletedAt(?\DateTimeInterface $deletedAt): self
  140.     {
  141.         $this->deletedAt $deletedAt;
  142.         return $this;
  143.     }
  144.     public function getFirstName(): ?string
  145.     {
  146.         return $this->firstName;
  147.     }
  148.     public function setFirstName(?string $firstName): self
  149.     {
  150.         $this->firstName $firstName;
  151.         return $this;
  152.     }
  153.     public function getLastName(): ?string
  154.     {
  155.         return $this->lastName;
  156.     }
  157.     public function setLastName(?string $lastName): self
  158.     {
  159.         $this->lastName $lastName;
  160.         return $this;
  161.     }
  162.     public function getPhone(): ?string
  163.     {
  164.         return $this->phone;
  165.     }
  166.     public function setPhone(?string $phone): self
  167.     {
  168.         $this->phone $phone;
  169.         return $this;
  170.     }
  171.     public function isIsEnable(): ?bool
  172.     {
  173.         return $this->isEnable;
  174.     }
  175.     public function setIsEnable(?bool $isEnable): self
  176.     {
  177.         $this->isEnable $isEnable;
  178.         return $this;
  179.     }
  180.     /**
  181.      * @return Collection<int, RequestHistory>
  182.      */
  183.     public function getRequestHistories(): Collection
  184.     {
  185.         return $this->requestHistories;
  186.     }
  187.     public function addRequestHistory(RequestHistory $requestHistory): self
  188.     {
  189.         if (!$this->requestHistories->contains($requestHistory)) {
  190.             $this->requestHistories->add($requestHistory);
  191.             $requestHistory->setUser($this);
  192.         }
  193.         return $this;
  194.     }
  195.     public function removeRequestHistory(RequestHistory $requestHistory): self
  196.     {
  197.         if ($this->requestHistories->removeElement($requestHistory)) {
  198.             // set the owning side to null (unless already changed)
  199.             if ($requestHistory->getUser() === $this) {
  200.                 $requestHistory->setUser(null);
  201.             }
  202.         }
  203.         return $this;
  204.     }
  205.     /**
  206.      * @return Collection<int, Project>
  207.      */
  208.     public function getProjects(): Collection
  209.     {
  210.         return $this->projects;
  211.     }
  212.     public function addProject(Project $project): static
  213.     {
  214.         if (!$this->projects->contains($project)) {
  215.             $this->projects->add($project);
  216.             $project->setUser($this);
  217.         }
  218.         return $this;
  219.     }
  220.     public function removeProject(Project $project): static
  221.     {
  222.         if ($this->projects->removeElement($project)) {
  223.             // set the owning side to null (unless already changed)
  224.             if ($project->getUser() === $this) {
  225.                 $project->setUser(null);
  226.             }
  227.         }
  228.         return $this;
  229.     }
  230.     /**
  231.      * @return Collection<int, RequestComment>
  232.      */
  233.     public function getRequestComments(): Collection
  234.     {
  235.         return $this->requestComments;
  236.     }
  237.     public function addRequestComment(RequestComment $requestComment): static
  238.     {
  239.         if (!$this->requestComments->contains($requestComment)) {
  240.             $this->requestComments->add($requestComment);
  241.             $requestComment->setUser($this);
  242.         }
  243.         return $this;
  244.     }
  245.     public function removeRequestComment(RequestComment $requestComment): static
  246.     {
  247.         if ($this->requestComments->removeElement($requestComment)) {
  248.             // set the owning side to null (unless already changed)
  249.             if ($requestComment->getUser() === $this) {
  250.                 $requestComment->setUser(null);
  251.             }
  252.         }
  253.         return $this;
  254.     }
  255.     /**
  256.      * @return Collection<int, RequestForm>
  257.      */
  258.     public function getRequestForms(): Collection
  259.     {
  260.         return $this->requestForms;
  261.     }
  262.     public function addRequestForm(RequestForm $requestForm): static
  263.     {
  264.         if (!$this->requestForms->contains($requestForm)) {
  265.             $this->requestForms->add($requestForm);
  266.             $requestForm->setUser($this);
  267.         }
  268.         return $this;
  269.     }
  270.     public function removeRequestForm(RequestForm $requestForm): static
  271.     {
  272.         if ($this->requestForms->removeElement($requestForm)) {
  273.             // set the owning side to null (unless already changed)
  274.             if ($requestForm->getUser() === $this) {
  275.                 $requestForm->setUser(null);
  276.             }
  277.         }
  278.         return $this;
  279.     }
  280.     public function getRole(): ?string
  281.     {
  282.         return $this->roles[0] ?? null// Retourne le premier rôle
  283.     }
  284.  
  285.     public function setRole(?string $role): self
  286.     {
  287.         $this->roles = [$role]; // Met à jour les rôles comme tableau
  288.  
  289.         return $this;
  290.     }
  291. }