FestinHegre/src/Entity/Utilisateurs.php
2024-11-21 15:01:29 +01:00

181 lines
4.0 KiB
PHP

<?php
namespace App\Entity;
use App\Repository\UtilisateursRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
#[ORM\Entity(repositoryClass: UtilisateursRepository::class)]
class Utilisateurs implements UserInterface, PasswordAuthenticatedUserInterface
{
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'SEQUENCE')]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255)]
private ?string $Nom = null;
#[ORM\Column(length: 255)]
private ?string $Prenom = null;
#[ORM\Column(length: 255, unique: true)]
private ?string $Mail = null;
#[ORM\Column(length: 255)]
private ?string $MotDePasse = null;
#[ORM\Column(type: 'json', length: 255)]
private array $Role = [];
/**
* @var Collection<int, Reservations>
*/
#[ORM\ManyToMany(targetEntity: Reservations::class, inversedBy: 'utilisateurs')]
private Collection $Reservation;
/**
* @var Collection<int, Tables>
*/
#[ORM\ManyToMany(targetEntity: Tables::class, inversedBy: 'utilisateurs')]
private Collection $tables;
public function __construct()
{
$this->Reservation = new ArrayCollection();
$this->tables = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getNom(): ?string
{
return $this->Nom;
}
public function setNom(string $Nom): static
{
$this->Nom = $Nom;
return $this;
}
public function getPrenom(): ?string
{
return $this->Prenom;
}
public function setPrenom(string $Prenom): static
{
$this->Prenom = $Prenom;
return $this;
}
public function getUserIdentifier(): string
{
return $this->Mail;
}
public function setUserIdentifier(string $userIdentifier): self
{
$this->Mail = $userIdentifier;
return $this;
}
public function getPassword(): ?string
{
return $this->MotDePasse;
}
public function setPassword(string $MotDePasse): static
{
$this->MotDePasse = $MotDePasse;
return $this;
}
public function getRoles(): array
{
return $this->Role;
}
public function getRolesAsString(): string
{
// Supprime le préfixe "ROLE_" et formate en majuscule seulement la première lettre
$roles = array_map(function($role) {
return ucfirst(strtolower(str_replace('ROLE_', '', $role)));
}, $this->Role);
return implode(', ', $roles);
}
public function setRoles(array $Role): self
{
$this->Role = $Role;
return $this;
}
public function eraseCredentials(): void
{
// Méthode pour effacer les données sensibles (ex : plaintext password)
}
/**
* @return Collection<int, Reservations>
*/
public function getReservation(): Collection
{
return $this->Reservation;
}
public function addReservation(Reservations $reservation): static
{
if (!$this->Reservation->contains($reservation)) {
$this->Reservation->add($reservation);
}
return $this;
}
public function removeReservation(Reservations $reservation): static
{
$this->Reservation->removeElement($reservation);
return $this;
}
/**
* @return Collection<int, Tables>
*/
public function getTables(): Collection
{
return $this->tables;
}
public function addTable(Tables $tables): static
{
if (!$this->tables->contains($tables)) {
$this->tables->add($tables);
}
return $this;
}
public function removeTable(Tables $tables): static
{
$this->tables->removeElement($tables);
return $this;
}
}