src/Entity/User.php line 41
<?phpdeclare(strict_types=1);namespace App\Entity;use ApiPlatform\Core\Annotation\ApiResource;use App\Controller\Api\Action\User\UserMenuVisibilityAction;use App\Enum\BaseRoleEnum;use App\Repository\UserRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\ORM\Mapping as ORM;use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;use Symfony\Component\Security\Core\User\UserInterface;use Symfony\Component\Validator\Constraints as Assert;#[ORM\Entity(repositoryClass: UserRepository::class)]#[ORM\Table(name: 'user')]#[UniqueEntity(fields: 'email',message: 'user.email',groups: ['registration', 'password_reset', 'admin-action-create'])]#[ApiResource(collectionOperations: [],itemOperations: ['get','menu_visibility' => ['access_control' => 'is_granted("ROLE_USER")','method' => 'PATCH','path' => '/users/menu/visibility/{id}','controller' => UserMenuVisibilityAction::class]])]class User implements UserInterface, PasswordAuthenticatedUserInterface{#[ORM\Id]#[ORM\GeneratedValue]#[ORM\Column(type: 'integer')]private ?int $id = null;#[ORM\Column(name: 'email',type: 'string',length: 180,unique: true,nullable: false)]#[Assert\NotBlank(groups: ['registration', 'request_password_reset', 'admin-action-create'])]#[Assert\Email(groups: ['password_reset', 'admin-action-create'])]private string $email;#[ORM\Column(type: 'simple_array')]private array $roles = [];#[ORM\Column(name: 'password',type: 'string',nullable: false)]private string $password;#[ORM\Column(name: 'first_name',type: 'string',nullable: false)]#[Assert\NotBlank(groups: ['registration', 'update', 'admin-action-create', 'admin-action-update'])]private ?string $firstName = null;#[ORM\Column(name: 'last_name',type: 'string',nullable: false)]#[Assert\NotBlank(groups: ['registration', 'update', 'admin-action-create', 'admin-action-update'])]private ?string $lastName = null;#[Assert\NotBlank(groups: ['registration', 'password_reset', 'admin-action-create'])]#[Assert\Length(max: 4096,groups: ['registration', 'update', 'action'])]private ?string $plainPassword = null;#[ORM\Column(name: 'registration_token',type: 'string',length: 191,nullable: true)]private ?string $registrationToken = null;#[ORM\Column(name: 'password_reset_token',type: 'string',length: 191,nullable: true)]private ?string $passwordResetToken = null;#[ORM\Column(name: 'menu_visibility',type: 'boolean',nullable: true)]private ?bool $menuVisibility = false;#[ORM\Column(name: 'active',type: 'boolean',nullable: true)]private ?bool $active = true;#[ORM\OneToMany(mappedBy: 'recipient',targetEntity: Notification::class,cascade: ['persist'],fetch: 'EXTRA_LAZY',orphanRemoval: true)]private iterable $notification;#[ORM\OneToMany(mappedBy: 'user',targetEntity: UserInstitution::class,cascade: ['persist'],fetch: 'EXTRA_LAZY',orphanRemoval: true)]#[Assert\Valid(groups: ['admin-action-create', 'admin-action-update'])]#[Assert\Count(min: 1,minMessage: 'user.minInstitution',groups: ['admin-action-create', 'admin-action-update'])]private iterable $userInstitution;#[ORM\OneToMany(mappedBy: 'user',targetEntity: ItemUser::class,cascade: ['persist'],fetch: 'EXTRA_LAZY',orphanRemoval: true)]private ?iterable $itemUser;#[ORM\OneToMany(mappedBy: 'user',targetEntity: PartnerUser::class,cascade: ['persist', 'remove'],fetch: 'EXTRA_LAZY',orphanRemoval: true)]private ?iterable $partnerUser;public function __construct(){$this->notification = new ArrayCollection();$this->userInstitution = new ArrayCollection();$this->itemUser = new ArrayCollection();$this->partnerUser = new ArrayCollection();}public function getId(): ?int{return $this->id;}public function getEmail(): ?string{return $this->email;}public function setEmail(string $email): self{$this->email = $email;return $this;}public function getRoles(): array{$roles = $this->roles;$roles[] = BaseRoleEnum::ROLE_USER;return array_unique($roles);}public function setRoles(array $roles): self{$this->roles = $roles;return $this;}public function getPassword(): string{return $this->password;}public function setPassword(string $password): self{$this->password = $password;return $this;}public function getFirstName(): ?string{return $this->firstName;}public function setFirstName(?string $firstName): self{$this->firstName = $firstName;return $this;}public function getLastName(): ?string{return $this->lastName;}public function setLastName(?string $lastName): self{$this->lastName = $lastName;return $this;}public function getFullName(): string{return $this->getFirstName() . ' ' . $this->getLastName();}public function getPlainPassword(): ?string{return $this->plainPassword;}public function setPlainPassword(?string $plainPassword): self{$this->plainPassword = $plainPassword;return $this;}public function getRegistrationToken(): ?string{return $this->registrationToken;}public function setRegistrationToken(?string $registrationToken): self{$this->registrationToken = $registrationToken;return $this;}public function getPasswordResetToken(): ?string{return $this->passwordResetToken;}public function setPasswordResetToken(?string $passwordResetToken): self{$this->passwordResetToken = $passwordResetToken;return $this;}public function isMenuVisibility(): ?bool{return $this->menuVisibility;}public function setMenuVisibility(?bool $menuVisibility): self{$this->menuVisibility = $menuVisibility;return $this;}public function getActive(): ?bool{return $this->active;}public function setActive(?bool $active): self{$this->active = $active;return $this;}public function isNotificationsUnread(): bool{/** @var Notification $n */foreach ($this->getNotification() as $n) {if (null === $n->getReadDate()) {return true;}}return false;}public function getNotification(): iterable{return $this->notification;}public function removeUserInstitution(UserInstitution $userInstitution): void{if (!$this->userInstitution->contains($userInstitution)) {return;}$this->userInstitution->removeElement($userInstitution);$userInstitution->setUser(null);}public function addUserInstitution(UserInstitution $userInstitution): void{if ($this->userInstitution->contains($userInstitution)) {return;}$this->userInstitution[] = $userInstitution;$userInstitution->setUser($this);}public function getCurrentRoleInstitution(): ?UserInstitutionRole{/** @var UserInstitution $userInstitution */foreach ($this->getUserInstitution() as $userInstitution) {/** @var UserInstitutionRole $userRoleInstitution */foreach ($userInstitution->getRoles() as $userRoleInstitution)if ($userRoleInstitution->isCurrent()) {return $userRoleInstitution;}}return null;}public function getCurrentRolePartnerUser(): ?PartnerUser{/** @var PartnerUser $partnerUser */foreach ($this->getPartnerUser() as $partnerUser) {if ($partnerUser->isCurrent()) {return $partnerUser;}}return null;}public function getCurrentInstitution(): ?Institution{$currentRoleInstitution = $this->getCurrentRoleInstitution();return $currentRoleInstitution?->getUserInstitution()->getInstitution();}public function getCurrentRole(): ?Role{$currentRoleInstitution = $this->getCurrentRoleInstitution();return $currentRoleInstitution?->getRole();}public function getUserInstitution(): iterable{return $this->userInstitution;}public function setUserInstitution(iterable $userInstitutions): self{$this->userInstitution = $userInstitutions;return $this;}public function getItemUser(): iterable{return $this->itemUser;}public function getPartnerUser(): iterable{return $this->partnerUser;}public function addPartnerUser(PartnerUser $partnerUser): void{if ($this->partnerUser->contains($partnerUser)) {return;}$this->partnerUser[] = $partnerUser;$partnerUser->setUser($this);}public function removePartnerUser(PartnerUser $partnerUser): void{if (!$this->partnerUser->contains($partnerUser)) {return;}$this->partnerUser->removeElement($partnerUser);$partnerUser->setUser(null);}public function getSalt(): ?string{return null;}public function eraseCredentials(): void{}public function getUsername(): string{return $this->email;}public function getUserIdentifier(): string{return $this->email;}public function __sleep(): array{return ['id', 'password', 'email'];}}