src/Entity/Core/User.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Core;
  3. use Doctrine\ORM\Mapping as ORM;
  4. use Symfony\Component\Validator\Constraints as Assert;
  5. use App\Repository\UserRepository;
  6. use App\Entity\Core\AbstractOrganization;
  7. use Symfony\Component\Security\Core\User\UserInterface;
  8. use Symfony\Component\Serializer\Annotation\MaxDepth;
  9. /**
  10.  * BaseUser.
  11.  *
  12.  * @ORM\Entity(repositoryClass=UserRepository::class)
  13.  */
  14. class User implements UserInterface
  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="string", length=180, unique=true)
  28.      */
  29.     private $username;
  30.     /**
  31.      * @var \DateTime
  32.     @ORM\Column(name="last_login", type="datetime", options={"default": "CURRENT_TIMESTAMP"})
  33.      */
  34.     protected $lastLogin;
  35.     /**
  36.      * @ORM\Column(type="simple_array")
  37.      */
  38.     private $roles = [];
  39.     /**
  40.      * @var string The hashed password
  41.      * @ORM\Column(type="string")
  42.      */
  43.     private $password;
  44.     /**
  45.      * @var AbstractOrganization
  46.      * @ORM\ManyToOne(targetEntity="AbstractOrganization", inversedBy="users", cascade={"persist", "merge"})
  47.      * @ORM\JoinColumn(nullable=true)
  48.      * @Assert\NotNull(message="Vous devez renseigner un centre de rattachement.", groups={"organization"})
  49.      * @MaxDepth(2)
  50.      *
  51.      */
  52.     protected $organization;
  53.     /**
  54.      * @var string
  55.      * @ORM\Column(name="access_rights", type="simple_array", nullable=true)
  56.      */
  57.     protected $accessRights;
  58.     /**
  59.      * Constructor.
  60.      */
  61.     public function __construct()
  62.     {
  63.         $this->accessRights = array();
  64.     }
  65.     public function getId(): ?int
  66.     {
  67.         return $this->id;
  68.     }
  69.     public function getEmail(): ?string
  70.     {
  71.         return $this->email;
  72.     }
  73.     public function setEmail(string $email): self
  74.     {
  75.         $this->email $email;
  76.         return $this;
  77.     }
  78.     /**
  79.      * A visual identifier that represents this user.
  80.      *
  81.      * @see UserInterface
  82.      */
  83.     public function getUserIdentifier(): string
  84.     {
  85.         return (string) $this->username;
  86.     }
  87.     public function setUsername(string $username): self
  88.     {
  89.         $this->username $username;
  90.         return $this;
  91.     }
  92.     /**
  93.      * @deprecated since Symfony 5.3, use getUserIdentifier instead
  94.      */
  95.     public function getUsername(): string
  96.     {
  97.         return (string) $this->username;
  98.     }
  99.     /**
  100.      * Gets the last login time.
  101.      *
  102.      * @return \DateTime
  103.      */
  104.     public function getLastLogin()
  105.     {
  106.         return $this->lastLogin;
  107.     }
  108.     public function setLastLogin(\DateTime $time)
  109.     {
  110.         $this->lastLogin $time;
  111.         return $this;
  112.     }
  113.     /**
  114.      * @see UserInterface
  115.      */
  116.     public function getRoles(): array
  117.     {
  118.         $roles $this->roles;
  119.         // guarantee every user at least has ROLE_USER
  120.         $roles[] = 'ROLE_SHIB_USER';
  121.         return array_unique($roles);
  122.     }
  123.     public function setRoles(array $roles): self
  124.     {
  125.         $this->roles $roles;
  126.         return $this;
  127.     }
  128.     public function hasRole($role)
  129.     {
  130.         return in_array(strtoupper($role), $this->getRoles(), true);
  131.     }
  132.     /**
  133.      * @see PasswordAuthenticatedUserInterface
  134.      */
  135.     public function getPassword(): string
  136.     {
  137.         return $this->password;
  138.     }
  139.     public function setPassword(string $password): self
  140.     {
  141.         $this->password $password;
  142.         return $this;
  143.     }
  144.     /**
  145.      * Returning a salt is only needed, if you are not using a modern
  146.      * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
  147.      *
  148.      * @see UserInterface
  149.      */
  150.     public function getSalt(): ?string
  151.     {
  152.         return null;
  153.     }
  154.     /**
  155.      * @see UserInterface
  156.      */
  157.     public function eraseCredentials()
  158.     {
  159.         // If you store any temporary, sensitive data on the user, clear it here
  160.         // $this->plainPassword = null;
  161.     }
  162.     /**
  163.      * @param AbstractOrganization $organization
  164.      */
  165.     public function setOrganization(AbstractOrganization $organization)
  166.     {
  167.         $this->organization $organization;
  168.     }
  169.     /**
  170.      * @return AbstractOrganization
  171.      */
  172.     public function getOrganization()
  173.     {
  174.         return $this->organization;
  175.     }
  176.     /**
  177.      * @return mixed
  178.      */
  179.     public function getAccessRights()
  180.     {
  181.         return $this->accessRights;
  182.     }
  183.     /**
  184.      * @param mixed $accessRights
  185.      */
  186.     public function setAccessRights($accessRights)
  187.     {
  188.         $this->accessRights $accessRights $accessRights : array();
  189.     }
  190.     /**
  191.      * @return bool
  192.      */
  193.     public function isAdmin()
  194.     {
  195.         return $this->hasRole('ROLE_ADMIN');
  196.     }
  197.     /**
  198.      * Override default method.
  199.      *
  200.      * @param string $emailCanonical
  201.      *
  202.      * @return $this|\FOS\CoreBundle\Model\UserInterface
  203.      */
  204. /*    public function setEmailCanonical($emailCanonical)
  205.     {
  206.         return parent::setEmailCanonical(strval(uniqid()).$emailCanonical);
  207.     }*/
  208. }