vendor/umbrella2/adminbundle/src/Entity/BaseAdminUser.php line 10

Open in your IDE?
  1. <?php
  2. namespace Umbrella\AdminBundle\Entity;
  3. use Symfony\Component\Security\Core\User\EquatableInterface;
  4. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  5. use Symfony\Component\Security\Core\User\UserInterface;
  6. use Umbrella\CoreBundle\Search\Annotation\SearchableField;
  7. abstract class BaseAdminUser implements EquatableInterface\SerializableUserInterfacePasswordAuthenticatedUserInterface
  8. {
  9.     public ?int $id null;
  10.     public ?string $search null;
  11.     /**
  12.      * @var ?\DateTime
  13.      */
  14.     public ?\DateTimeInterface $createdAt null;
  15.     /**
  16.      * @var ?\DateTime
  17.      */
  18.     public ?\DateTimeInterface $updatedAt null;
  19.     public bool $active true;
  20.     /**
  21.      * @SearchableField
  22.      */
  23.     public ?string $firstname null;
  24.     /**
  25.      * @SearchableField
  26.      */
  27.     public ?string $lastname null;
  28.     public ?string $password null;
  29.     /**
  30.      * Used only by form
  31.      */
  32.     public ?string $plainPassword null;
  33.     /**
  34.      * @SearchableField
  35.      */
  36.     public ?string $email null;
  37.     /**
  38.      * Random string sent to the user email address to verify it.
  39.      */
  40.     public ?string $confirmationToken null;
  41.     /**
  42.      * @var ?\DateTime
  43.      */
  44.     public ?\DateTimeInterface $passwordRequestedAt null;
  45.     public function getFullName(): string
  46.     {
  47.         return sprintf('%s %s'$this->firstname$this->lastname);
  48.     }
  49.     public function generateConfirmationToken(): void
  50.     {
  51.         $this->confirmationToken rtrim(strtr(base64_encode(random_bytes(32)), '+/''-_'), '=');
  52.     }
  53.     public function isPasswordRequestNonExpired(int $ttl): bool
  54.     {
  55.         return $this->passwordRequestedAt instanceof \DateTime &&
  56.             $this->passwordRequestedAt->getTimestamp() + $ttl time();
  57.     }
  58.     // Equatable implementation
  59.     /**
  60.      * {@inheritdoc}
  61.      */
  62.     public function isEqualTo(UserInterface $user): bool
  63.     {
  64.         if (!$user instanceof self) {
  65.             return false;
  66.         }
  67.         if ($this->getPassword() !== $user->getPassword()) {
  68.             return false;
  69.         }
  70.         if ($this->getUserIdentifier() !== $user->getUserIdentifier()) {
  71.             return false;
  72.         }
  73.         return true;
  74.     }
  75.     // Serializable implementation
  76.     /**
  77.      * {@inheritdoc}
  78.      */
  79.     public function serialize(): string
  80.     {
  81.         return serialize([
  82.             $this->id,
  83.             $this->password,
  84.             $this->email,
  85.         ]);
  86.     }
  87.     /**
  88.      * {@inheritdoc}
  89.      */
  90.     public function unserialize($serialized)
  91.     {
  92.         list(
  93.             $this->id,
  94.             $this->password,
  95.             $this->email
  96.             ) = unserialize($serialized);
  97.     }
  98.     // UserInterface implementation
  99.     public function setPassword(?string $password)
  100.     {
  101.         $this->password $password;
  102.         $this->passwordRequestedAt null;
  103.         $this->confirmationToken null;
  104.     }
  105.     /**
  106.      * {@inheritdoc}
  107.      */
  108.     public function getPassword(): ?string
  109.     {
  110.         return $this->password;
  111.     }
  112.     /**
  113.      * Returning a salt is only needed, if you are not using a modern
  114.      * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
  115.      *
  116.      * @see UserInterface
  117.      */
  118.     public function getSalt(): ?string
  119.     {
  120.         return null;
  121.     }
  122.     /**
  123.      * {@inheritdoc}
  124.      */
  125.     public function eraseCredentials()
  126.     {
  127.         $this->plainPassword null;
  128.     }
  129.     /**
  130.      * {@inheritdoc}
  131.      */
  132.     public function getUserIdentifier(): string
  133.     {
  134.         return (string) $this->email;
  135.     }
  136.     /*
  137.      * Keep for backward compatibility with Symfony 5.3
  138.      */
  139.     final public function getUsername(): string
  140.     {
  141.         return $this->getUserIdentifier();
  142.     }
  143.     // Std implementation
  144.     /**
  145.      * {@inheritdoc}
  146.      */
  147.     public function __toString(): string
  148.     {
  149.         return $this->getUserIdentifier();
  150.     }
  151. }