vendor/symfony/security-http/Authenticator/Passport/Badge/PasswordUpgradeBadge.php line 26

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\Security\Http\Authenticator\Passport\Badge;
  11. use Symfony\Component\Security\Core\Exception\LogicException;
  12. use Symfony\Component\Security\Core\User\PasswordUpgraderInterface;
  13. /**
  14.  * Adds automatic password migration, if enabled and required in the password encoder.
  15.  *
  16.  * @see PasswordUpgraderInterface
  17.  *
  18.  * @author Wouter de Jong <wouter@wouterj.nl>
  19.  *
  20.  * @final
  21.  */
  22. class PasswordUpgradeBadge implements BadgeInterface
  23. {
  24.     private $plaintextPassword;
  25.     private $passwordUpgrader;
  26.     /**
  27.      * @param string                         $plaintextPassword The presented password, used in the rehash
  28.      * @param PasswordUpgraderInterface|null $passwordUpgrader  The password upgrader, defaults to the UserProvider if null
  29.      */
  30.     public function __construct(string $plaintextPassword, ?PasswordUpgraderInterface $passwordUpgrader null)
  31.     {
  32.         $this->plaintextPassword $plaintextPassword;
  33.         $this->passwordUpgrader $passwordUpgrader;
  34.     }
  35.     public function getAndErasePlaintextPassword(): string
  36.     {
  37.         $password $this->plaintextPassword;
  38.         if (null === $password) {
  39.             throw new LogicException('The password is erased as another listener already used this badge.');
  40.         }
  41.         $this->plaintextPassword null;
  42.         return $password;
  43.     }
  44.     public function getPasswordUpgrader(): ?PasswordUpgraderInterface
  45.     {
  46.         return $this->passwordUpgrader;
  47.     }
  48.     public function isResolved(): bool
  49.     {
  50.         return true;
  51.     }
  52. }