src/Entity/User.php line 16

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\HttpFoundation\File\File;
  6. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  7. use Symfony\Component\Security\Core\User\UserInterface;
  8. use Symfony\Component\Serializer\Annotation\Ignore;
  9. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  10. /**
  11.  * @ORM\Entity(repositoryClass=UserRepository::class)
  12.  */
  13. class User implements UserInterfacePasswordAuthenticatedUserInterface
  14. {
  15.     /**
  16.      * @ORM\Id
  17.      * @ORM\GeneratedValue
  18.      * @ORM\Column(type="integer")
  19.      */
  20.     private $id;
  21.     /**
  22.      * @ORM\Column(type="string", length=180, unique=true)
  23.      */
  24.     private $email;
  25.     /**
  26.      * @ORM\Column(type="json")
  27.      */
  28.     private $roles = [];
  29.     /**
  30.      * @ORM\ManyToOne(targetEntity=UserRole::class, inversedBy="users")
  31.      */
  32.     private $user_role;
  33.     /**
  34.      * @var string The hashed password
  35.      * @ORM\Column(type="string")
  36.      */
  37.     private $password;
  38.     /**
  39.      * @ORM\Column(type="boolean")
  40.      */
  41.     private $active;
  42.     /**
  43.      * @var string
  44.      * @ORM\Column(type="string", length=255, nullable=true)
  45.      */
  46.     private $googleId;
  47.     /**
  48.      * @Vich\UploadableField(mapping="avatars", fileNameProperty="avatarName")
  49.      * @var File|null
  50.      * @Ignore()
  51.      */
  52.     private ?File $avatarFile null;
  53.     /**
  54.      * @ORM\Column(type="string", length=255, nullable=true)
  55.      */
  56.     private ?string $avatarName null;
  57.     /**
  58.      * @ORM\OneToOne(targetEntity=Employee::class, mappedBy="user", cascade={"persist", "remove"})
  59.      */
  60.     private $employee;
  61.     /**
  62.      * @return File|null
  63.      */
  64.     public function getAvatarFile(): ?File
  65.     {
  66.         return $this->avatarFile;
  67.     }
  68.     /**
  69.      * @param File|null $avatarFile
  70.      * @return User
  71.      */
  72.     public function setAvatarFile(?File $avatarFile): User
  73.     {
  74.         $this->avatarFile $avatarFile;
  75.         return $this;
  76.     }
  77.     /**
  78.      * @return string|null
  79.      */
  80.     public function getAvatarName(): ?string
  81.     {
  82.         return $this->avatarName;
  83.     }
  84.     /**
  85.      * @param string|null $avatarName
  86.      * @return User
  87.      */
  88.     public function setAvatarName(?string $avatarName): User
  89.     {
  90.         $this->avatarName $avatarName;
  91.         return $this;
  92.     }
  93.     /**
  94.      * @return string
  95.      */
  96.     public function getGoogleId(): string
  97.     {
  98.         return (string)$this->googleId;
  99.     }
  100.     /**
  101.      * @param string $googleId
  102.      * @return User
  103.      */
  104.     public function setGoogleId(string $googleId): User
  105.     {
  106.         $this->googleId $googleId;
  107.         return $this;
  108.     }
  109.     /**
  110.      * @return mixed
  111.      */
  112.     public function getActive()
  113.     {
  114.         return $this->active;
  115.     }
  116.     /**
  117.      * @param mixed $active
  118.      * @return User
  119.      */
  120.     public function setActive($active)
  121.     {
  122.         $this->active $active;
  123.         return $this;
  124.     }
  125.     public function getId(): ?int
  126.     {
  127.         return $this->id;
  128.     }
  129.     public function getEmail(): ?string
  130.     {
  131.         return $this->email;
  132.     }
  133.     public function setEmail(string $email): self
  134.     {
  135.         $this->email $email;
  136.         return $this;
  137.     }
  138.     /**
  139.      * A visual identifier that represents this user.
  140.      *
  141.      * @see UserInterface
  142.      */
  143.     public function getUserIdentifier(): string
  144.     {
  145.         return (string)$this->email;
  146.     }
  147.     /**
  148.      * @deprecated since Symfony 5.3, use getUserIdentifier instead
  149.      */
  150.     public function getUsername(): string
  151.     {
  152.         return (string)$this->email;
  153.     }
  154.     /**
  155.      * @return UserRole
  156.      */
  157.     public function getUserRole()
  158.     {
  159.         return $this->user_role;
  160.     }
  161.     /**
  162.      * @param mixed $user_role
  163.      * @return User
  164.      */
  165.     public function setUserRole($user_role): User
  166.     {
  167.         $this->user_role $user_role;
  168.         return $this;
  169.     }
  170.     /**
  171.      * @see UserInterface
  172.      */
  173.     public function getRoles(): array
  174.     {
  175.         $roles $this->roles;
  176.         // guarantee every user at least has ROLE_USER
  177.         $roles[] = 'ROLE_USER';
  178.         return array_unique($roles);
  179.     }
  180.     public function setRoles(array $roles): self
  181.     {
  182.         $this->roles $roles;
  183.         return $this;
  184.     }
  185.     /**
  186.      * @see PasswordAuthenticatedUserInterface
  187.      */
  188.     public function getPassword(): string
  189.     {
  190.         return $this->password;
  191.     }
  192.     public function setPassword(string $password): self
  193.     {
  194.         $this->password $password;
  195.         return $this;
  196.     }
  197.     /**
  198.      * Returning a salt is only needed, if you are not using a modern
  199.      * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
  200.      *
  201.      * @see UserInterface
  202.      */
  203.     public function getSalt(): ?string
  204.     {
  205.         return null;
  206.     }
  207.     /**
  208.      * @see UserInterface
  209.      */
  210.     public function eraseCredentials()
  211.     {
  212.         // If you store any temporary, sensitive data on the user, clear it here
  213.         // $this->plainPassword = null;
  214.     }
  215.     public function getEmployee(): ?Employee
  216.     {
  217.         return $this->employee;
  218.     }
  219.     public function setEmployee(?Employee $employee): self
  220.     {
  221.         // unset the owning side of the relation if necessary
  222.         if ($employee === null && $this->employee !== null) {
  223.             $this->employee->setUser(null);
  224.         }
  225.         // set the owning side of the relation if necessary
  226.         if ($employee !== null && $employee->getUser() !== $this) {
  227.             $employee->setUser($this);
  228.         }
  229.         $this->employee $employee;
  230.         return $this;
  231.     }
  232. }