src/Entity/User.php line 17

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 Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  8. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. /**
  11.  * @ORM\Entity(repositoryClass=UserRepository::class)
  12.  * @UniqueEntity(fields={"email"}, message="There is already an account with this email")
  13.  */
  14. class User implements UserInterfacePasswordAuthenticatedUserInterface
  15. {
  16.     /**
  17.      * @ORM\Id
  18.      * @ORM\GeneratedValue
  19.      * @ORM\Column(type="integer")
  20.      */
  21.     private $id;
  22.     /**
  23.      * @ORM\Column(type="string", length=180, unique=true)
  24.      */
  25.     private $email;
  26.     /**
  27.      * @ORM\Column(type="json")
  28.      */
  29.     private $roles = [];
  30.     /**
  31.      * @var string The hashed password
  32.      * @ORM\Column(type="string")
  33.      */
  34.     private $password;
  35.     /**
  36.      * @ORM\ManyToMany(targetEntity=Patient::class, mappedBy="caregiver")
  37.      */
  38.     private $patients;
  39.     /**
  40.      * @ORM\Column(type="string", length=32, nullable=true)
  41.      */
  42.     private $name;
  43.     /**
  44.      * @ORM\Column(type="string", length=32, nullable=true)
  45.      */
  46.     private $surname;
  47.     public function __construct()
  48.     {
  49.         $this->patients = new ArrayCollection();
  50.     }
  51.     public function getId(): ?int
  52.     {
  53.         return $this->id;
  54.     }
  55.     public function getEmail(): ?string
  56.     {
  57.         return $this->email;
  58.     }
  59.     public function setEmail(string $email): self
  60.     {
  61.         $this->email $email;
  62.         return $this;
  63.     }
  64.     /**
  65.      * A visual identifier that represents this user.
  66.      *
  67.      * @see UserInterface
  68.      */
  69.     public function getUserIdentifier(): string
  70.     {
  71.         return (string) $this->email;
  72.     }
  73.     /**
  74.      * @deprecated since Symfony 5.3, use getUserIdentifier instead
  75.      */
  76.     public function getUsername(): string
  77.     {
  78.         return (string) $this->email;
  79.     }
  80.     /**
  81.      * @see UserInterface
  82.      */
  83.     public function getRoles(): array
  84.     {
  85.         $roles $this->roles;
  86.         // guarantee every user at least has ROLE_USER
  87.         $roles[] = 'ROLE_USER';
  88.         return array_unique($roles);
  89.     }
  90.     public function setRoles(array $roles): self
  91.     {
  92.         $this->roles $roles;
  93.         return $this;
  94.     }
  95.     /**
  96.      * @see PasswordAuthenticatedUserInterface
  97.      */
  98.     public function getPassword(): string
  99.     {
  100.         return $this->password;
  101.     }
  102.     public function setPassword(string $password): self
  103.     {
  104.         $this->password $password;
  105.         return $this;
  106.     }
  107.     /**
  108.      * Returning a salt is only needed, if you are not using a modern
  109.      * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
  110.      *
  111.      * @see UserInterface
  112.      */
  113.     public function getSalt(): ?string
  114.     {
  115.         return null;
  116.     }
  117.     /**
  118.      * @see UserInterface
  119.      */
  120.     public function eraseCredentials()
  121.     {
  122.         // If you store any temporary, sensitive data on the user, clear it here
  123.         // $this->plainPassword = null;
  124.     }
  125.     /**
  126.      * @return Collection|Patient[]
  127.      */
  128.     public function getPatients(): Collection
  129.     {
  130.         return $this->patients;
  131.     }
  132.     public function addPatient(Patient $patient): self
  133.     {
  134.         if (!$this->patients->contains($patient)) {
  135.             $this->patients[] = $patient;
  136.             $patient->addCaregiver($this);
  137.         }
  138.         return $this;
  139.     }
  140.     public function removePatient(Patient $patient): self
  141.     {
  142.         if ($this->patients->removeElement($patient)) {
  143.             $patient->removeCaregiver($this);
  144.         }
  145.         return $this;
  146.     }
  147.     public function __toString()
  148.     {
  149.         return $this->getName().' '.$this->getSurname();
  150.     }
  151.     public function getName(): ?string
  152.     {
  153.         return $this->name;
  154.     }
  155.     public function setName(?string $name): self
  156.     {
  157.         $this->name $name;
  158.         return $this;
  159.     }
  160.     public function getSurname(): ?string
  161.     {
  162.         return $this->surname;
  163.     }
  164.     public function setSurname(?string $surname): self
  165.     {
  166.         $this->surname $surname;
  167.         return $this;
  168.     }
  169. }