<?php
declare(strict_types=1);
namespace App\Infrastructure\Doctrine\Entity;
use App\Domain\Common\Entity\BaseUser;
use App\Infrastructure\Doctrine\Entity\Traits\EnabledTrait;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
/**
* @ORM\Entity(repositoryClass="App\Infrastructure\Doctrine\Repository\DoctrineBaseUserRepository")
*
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorMap({
* "iz_order_client" = "DoctrineIzOrderClient",
* "admin" = "DoctrineUserAdmin",
* "agent" = "DoctrineUserAgent",
* })
*
* @UniqueEntity(fields={"codeClient"}, message="Cet identifiant est déjà utilisé.")
*/
abstract class DoctrineBaseUser implements BaseUser, PasswordAuthenticatedUserInterface
{
use EnabledTrait;
/**
* @ORM\Id
* @ORM\Column(type="string", length=16, unique=true)
*/
protected string $codeClient = '';
/**
* @ORM\Column(type="string", length=191, nullable=true)
*/
protected ?string $email = null;
/**
* @ORM\Column(type="string", length=191, nullable=true)
*/
protected ?string $password = null;
/**
* @ORM\Column(type="string", length=191, nullable=true)
*/
protected ?string $resetPasswordToken;
abstract public function getRoles(): array;
public function getCodeClient(): string
{
return $this->codeClient;
}
public function setCodeClient(string $codeClient): void
{
$this->codeClient = $codeClient;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(?string $email): void
{
$this->email = $email;
}
public function getPassword(): ?string
{
return $this->password;
}
public function setPassword(?string $password): void
{
$this->password = $password;
}
public function getSalt(): ?string
{
return null;
}
public function getUserIdentifier(): string
{
return $this->codeClient;
}
public function getResetPasswordToken(): ?string
{
return $this->resetPasswordToken;
}
public function setResetPasswordToken(?string $resetPasswordToken): void
{
$this->resetPasswordToken = $resetPasswordToken;
}
// EasyAdmin a encore besoin de cette méthode
public function getUsername(): string
{
return $this->getUserIdentifier();
}
public function eraseCredentials(): void
{
}
}