*/ class ApiUserRepository implements UserLoaderInterface, PasswordUpgraderInterface { public function __construct(private UserRepository $userRepository) { } public function loadUserByIdentifier(string $identifier): ?UserInterface { return $this->userRepository->loadUserByIdentifier($identifier); } public function upgradePassword(PasswordAuthenticatedUserInterface|UserInterface $user, string $newHashedPassword): void { if (!($user instanceof User)) { return; } try { $user->setApiToken($newHashedPassword); $this->userRepository->saveUser($user); } catch (\Exception $ex) { // happens during login: if it fails, ignore it! } } }