src/Entity/User.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\UserRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Exception;
  8. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. use Symfony\Component\HttpFoundation\File\File;
  12. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  13. /**
  14.  * @ORM\Entity(repositoryClass=UserRepository::class)
  15.  * @Vich\Uploadable
  16.  */
  17. class User implements UserInterfacePasswordAuthenticatedUserInterface\Serializable
  18. {
  19.     const ROLE_CLIENT 'ROLE_CLIENT';
  20.     const ROLE_USER 'ROLE_USER';
  21.     /**
  22.      * @ORM\Id
  23.      * @ORM\GeneratedValue
  24.      * @ORM\Column(type="integer")
  25.      */
  26.     private $id;
  27.     /**
  28.      * @ORM\Column(type="string", length=180, unique=true)
  29.      */
  30.     private $email;
  31.     /**
  32.      * @ORM\Column(type="string", length=500, nullable=true)
  33.      */
  34.     private $gitlabId;
  35.     /**
  36.      * @ORM\Column(type="string", length=180)
  37.      */
  38.     private $firstname;
  39.     /**
  40.      * @ORM\Column(type="string", length=180)
  41.      */
  42.     private $lastname;
  43.     /**
  44.      * @ORM\Column(type="string", length=180, nullable=true)
  45.      */
  46.     private $job;
  47.     /**
  48.      * @ORM\Column(type="string", length=180, nullable=true)
  49.      */
  50.     private $channelId;
  51.     /**
  52.      * @ORM\Column(type="json")
  53.      */
  54.     private $roles = [];
  55.     /**
  56.      * @var string The hashed password
  57.      * @ORM\Column(type="string")
  58.      */
  59.     private $password;
  60.     /**
  61.      * @var string The hashed password
  62.      * @ORM\Column(type="string", nullable=true)
  63.      */
  64.     private $locale;
  65.     /**
  66.      * @Assert\Length(min=5, max=128)
  67.      */
  68.     private ?string $plainPassword null;
  69.     /**
  70.      * NOTE: This is not a mapped field of entity metadata, just a simple property.
  71.      *
  72.      * @Vich\UploadableField(mapping="users", fileNameProperty="imageName", size="imageSize")
  73.      *
  74.      * @var File|null
  75.      */
  76.     private $imageFile;
  77.     /**
  78.      * @ORM\Column(type="string",nullable=true)
  79.      *
  80.      * @var string|null
  81.      */
  82.     private $imageName;
  83.     /**
  84.      * @ORM\Column(type="integer",nullable=true)
  85.      *
  86.      * @var int|null
  87.      */
  88.     private $imageSize;
  89.     /**
  90.      * @ORM\Column(type="datetime",nullable=true)
  91.      *
  92.      * @var \DateTimeInterface|null
  93.      */
  94.     private $updatedAt;
  95.     /**
  96.      * If manually uploading a file (i.e. not using Symfony Form) ensure an instance
  97.      * of 'UploadedFile' is injected into this setter to trigger the update. If this
  98.      * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
  99.      * must be able to accept an instance of 'File' as the bundle will inject one here
  100.      * during Doctrine hydration.
  101.      *
  102.      * @param File|\Symfony\Component\HttpFoundation\File\UploadedFile|null $imageFile
  103.      */
  104.     public function setImageFile(?File $imageFile null): void
  105.     {
  106.         $this->imageFile $imageFile;
  107.         if (null !== $imageFile) {
  108.             // It is required that at least one field changes if you are using doctrine
  109.             // otherwise the event listeners won't be called and the file is lost
  110.             $this->updatedAt = new \DateTimeImmutable();
  111.         }
  112.     }
  113.     public function getImageFile(): ?File
  114.     {
  115.         return $this->imageFile;
  116.     }
  117.     public function setImageName(?string $imageName): void
  118.     {
  119.         $this->imageName $imageName;
  120.     }
  121.     public function getImageName(): ?string
  122.     {
  123.         return $this->imageName;
  124.     }
  125.     public function setImageSize(?int $imageSize): void
  126.     {
  127.         $this->imageSize $imageSize;
  128.     }
  129.     public function getImageSize(): ?int
  130.     {
  131.         return $this->imageSize;
  132.     }
  133.     /**
  134.      * @ORM\ManyToOne(targetEntity=Company::class, inversedBy="users")
  135.      */
  136.     private $company;
  137.     /**
  138.      * @ORM\OneToMany(targetEntity=Project::class, mappedBy="user", cascade={"persist"})
  139.      */
  140.     private $projects;
  141.     /**
  142.      * @ORM\OneToMany(targetEntity=UserPro::class, mappedBy="user")
  143.      */
  144.     private $userPros;
  145.     /**
  146.      * @ORM\OneToMany(targetEntity=Report::class, mappedBy="user")
  147.      */
  148.     private $reports;
  149.     /**
  150.      * @ORM\OneToMany(targetEntity=Task::class, mappedBy="user")
  151.      */
  152.     private $tasks;
  153.     /**
  154.      * @ORM\OneToMany(targetEntity=Task::class, mappedBy="assigne")
  155.      */
  156.     private $tasksAssigne;
  157.     public function __toString()
  158.                                   {
  159.                                       return $this->email;
  160.                                   }
  161.     public function __construct()
  162.                                   {
  163.                                       $this->projects = new ArrayCollection();
  164.                                       $this->userPros = new ArrayCollection();
  165.                                       $this->reports = new ArrayCollection();
  166.                                       $this->tasks = new ArrayCollection();
  167.                                       $this->tasksAssigne = new ArrayCollection();
  168.                                   }
  169.     public function getId(): ?int
  170.     {
  171.         return $this->id;
  172.     }
  173.     public function getEmail(): ?string
  174.     {
  175.         return $this->email;
  176.     }
  177.     public function setEmail(string $email): self
  178.     {
  179.         $this->email $email;
  180.         return $this;
  181.     }
  182.     /**
  183.      * A visual identifier that represents this user.
  184.      *
  185.      * @see UserInterface
  186.      */
  187.     public function getUserIdentifier(): string
  188.     {
  189.         return (string) $this->email;
  190.     }
  191.     /**
  192.      * @deprecated since Symfony 5.3, use getUserIdentifier instead
  193.      */
  194.     public function getUsername(): string
  195.     {
  196.         return (string) $this->email;
  197.     }
  198.     /**
  199.      * @see UserInterface
  200.      */
  201.     public function getRoles(): array
  202.     {
  203.         $roles $this->roles;
  204.         return array_unique($roles);
  205.     }
  206.     public function setRoles(array $roles): self
  207.     {
  208.         $this->roles $roles;
  209.         return $this;
  210.     }
  211.     /**
  212.      * @see PasswordAuthenticatedUserInterface
  213.      */
  214.     public function getPassword(): string
  215.     {
  216.         return $this->password;
  217.     }
  218.     public function setPassword(string $password): self
  219.     {
  220.         $this->password $password;
  221.         return $this;
  222.     }
  223.     /**
  224.      * Returning a salt is only needed, if you are not using a modern
  225.      * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
  226.      *
  227.      * @see UserInterface
  228.      */
  229.     public function getSalt(): ?string
  230.     {
  231.         return null;
  232.     }
  233.     /**
  234.      * @see UserInterface
  235.      */
  236.     public function eraseCredentials()
  237.     {
  238.         // If you store any temporary, sensitive data on the user, clear it here
  239.         $this->plainPassword null;
  240.     }
  241.     public function getCompany(): ?Company
  242.     {
  243.         return $this->company;
  244.     }
  245.     public function setCompany(?Company $company): self
  246.     {
  247.         $this->company $company;
  248.         return $this;
  249.     }
  250.     public function getPlainPassword(): ?string
  251.                                                                                   {
  252.                                                                                       return $this->plainPassword;
  253.                                                                                   }
  254.     public function setPlainPassword(string $password): void
  255.                                                                                   {
  256.                                                                                       $this->plainPassword $password;
  257.                                                                                   }
  258.     /**
  259.      * @return string
  260.      */
  261.     public function getLocale(): ?string
  262.                                                                                   {
  263.                                                                                       return $this->locale;
  264.                                                                                   }
  265.     /**
  266.      * @param string $locale
  267.      */
  268.     public function setLocale(string $locale): void
  269.                                                                                   {
  270.                                                                                       $this->locale $locale;
  271.                                                                                   }
  272.     /**
  273.      * @return Collection<int, Project>
  274.      */
  275.     public function getProjects(): Collection
  276.     {
  277.         return $this->projects;
  278.     }
  279.     public function setProjects($projets){
  280.                                                               $this->projects $projets;
  281.                                                           }
  282.     public function addProject(Project $project): self
  283.     {
  284.         if (!$this->projects->contains($project)) {
  285.             $this->projects[] = $project;
  286.             $project->setUser($this);
  287.         }
  288.         return $this;
  289.     }
  290.     public function removeProject(Project $project): self
  291.     {
  292.         if ($this->projects->removeElement($project)) {
  293.             // set the owning side to null (unless already changed)
  294.             if ($project->getUser() === $this) {
  295.                 $project->setUser(null);
  296.             }
  297.         }
  298.         return $this;
  299.     }
  300.     /**
  301.      * @return Collection<int, UserPro>
  302.      */
  303.     public function getUserPros(): Collection
  304.     {
  305.         return $this->userPros;
  306.     }
  307.     public function addUserPro(UserPro $userPro): self
  308.     {
  309.         if (!$this->userPros->contains($userPro)) {
  310.             $this->userPros[] = $userPro;
  311.             $userPro->setUser($this);
  312.         }
  313.         return $this;
  314.     }
  315.     public function removeUserPro(UserPro $userPro): self
  316.     {
  317.         if ($this->userPros->removeElement($userPro)) {
  318.             // set the owning side to null (unless already changed)
  319.             if ($userPro->getUser() === $this) {
  320.                 $userPro->setUser(null);
  321.             }
  322.         }
  323.         return $this;
  324.     }
  325.     public function addTaskAssigne(Task $task): self
  326.     {
  327.         if (!$this->tasksAssigne->contains($task)) {
  328.             $this->tasksAssigne[] = $task;
  329.             $task->setAssigne($this);
  330.         }
  331.         return $this;
  332.     }
  333.     public function removeTaskAssigne(Task $task): self
  334.     {
  335.         if ($this->tasksAssigne->removeElement($task)) {
  336.             // set the owning side to null (unless already changed)
  337.             if ($task->getUser() === $this) {
  338.                 $task->setUser(null);
  339.             }
  340.         }
  341.         return $this;
  342.     }
  343.     /**
  344.      * @return Collection<int, Report>
  345.      */
  346.     public function getReports(): Collection
  347.     {
  348.         return $this->reports;
  349.     }
  350.     public function addReport(Report $report): self
  351.     {
  352.         if (!$this->reports->contains($report)) {
  353.             $this->reports[] = $report;
  354.             $report->setUser($this);
  355.         }
  356.         return $this;
  357.     }
  358.     public function removeReport(Report $report): self
  359.     {
  360.         if ($this->reports->removeElement($report)) {
  361.             // set the owning side to null (unless already changed)
  362.             if ($report->getUser() === $this) {
  363.                 $report->setUser(null);
  364.             }
  365.         }
  366.         return $this;
  367.     }
  368.     /**
  369.      * @return Collection<int, Task>
  370.      */
  371.     public function getTasks(): Collection
  372.     {
  373.         return $this->tasks;
  374.     }
  375.     public function addTask(Task $task): self
  376.     {
  377.         if (!$this->tasks->contains($task)) {
  378.             $this->tasks[] = $task;
  379.             $task->setUser($this);
  380.         }
  381.         return $this;
  382.     }
  383.     public function removeTask(Task $task): self
  384.     {
  385.         if ($this->tasks->removeElement($task)) {
  386.             // set the owning side to null (unless already changed)
  387.             if ($task->getUser() === $this) {
  388.                 $task->setUser(null);
  389.             }
  390.         }
  391.         return $this;
  392.     }
  393.     /**
  394.      * @return mixed
  395.      */
  396.     public function getFirstname()
  397.     {
  398.         return $this->firstname;
  399.     }
  400.     /**
  401.      * @param mixed $firstname
  402.      */
  403.     public function setFirstname($firstname): void
  404.     {
  405.         $this->firstname $firstname;
  406.     }
  407.     /**
  408.      * @return mixed
  409.      */
  410.     public function getLastname()
  411.     {
  412.         return $this->lastname;
  413.     }
  414.     /**
  415.      * @param mixed $lastname
  416.      */
  417.     public function setLastname($lastname): void
  418.     {
  419.         $this->lastname $lastname;
  420.     }
  421.     /**
  422.      * @return mixed
  423.      */
  424.     public function getTasksAssigne()
  425.     {
  426.         return $this->tasksAssigne;
  427.     }
  428.     /**
  429.      * @param mixed $tasksAssigne
  430.      */
  431.     public function setTasksAssigne($tasksAssigne): void
  432.     {
  433.         $this->tasksAssigne $tasksAssigne;
  434.     }
  435.     /**
  436.      * @return mixed
  437.      */
  438.     public function getJob()
  439.     {
  440.         return $this->job;
  441.     }
  442.     /**
  443.      * @param mixed $job
  444.      */
  445.     public function setJob($job): void
  446.     {
  447.         $this->job $job;
  448.     }
  449.     /**
  450.      * @return mixed
  451.      */
  452.     public function getChannelId()
  453.     {
  454.         return $this->channelId;
  455.     }
  456.     /**
  457.      * @param mixed $channelId
  458.      */
  459.     public function setChannelId($channelId): void
  460.     {
  461.         $this->channelId $channelId;
  462.     }
  463.     public function serialize()
  464.     {
  465.         return serialize(array(
  466.             $this->id,
  467.             $this->email,
  468.             $this->password,
  469.         ));
  470.     }
  471.     public function unserialize($serialized)
  472.     {
  473.         list(
  474.             $this->id,
  475.             $this->email,
  476.             $this->password,
  477.             ) = unserialize($serialized);
  478.     }
  479.     /**
  480.      *
  481.      * @access public
  482.      * @param  string                                              $role
  483.      * @return bool
  484.      */
  485.     public function hasRole($role)
  486.     {
  487.         if (in_array($role$this->roles)) {
  488.             return true;
  489.         }
  490.         return false;
  491.     }
  492.     /**
  493.      * @return mixed
  494.      */
  495.     public function getGitlabId()
  496.     {
  497.         return $this->gitlabId;
  498.     }
  499.     /**
  500.      * @param mixed $gitlabId
  501.      */
  502.     public function setGitlabId($gitlabId): void
  503.     {
  504.         $this->gitlabId $gitlabId;
  505.     }
  506. }