<?php
/*
* This file is part of EC-CUBE
*
* Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
*
* http://www.ec-cube.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Plugin\Api42\EventListener;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use League\Bundle\OAuth2ServerBundle\Event\UserResolveEvent;
final class UserResolveListener
{
/**
* @var UserProviderInterface
*/
private $userProvider;
/**
* @var UserPasswordHasherInterface
*/
private $userPasswordHasher;
/**
* @param UserProviderInterface $userProvider
* @param UserPasswordHasherInterface $userPasswordHasher
*/
public function __construct(UserProviderInterface $userProvider, UserPasswordHasherInterface $userPasswordHasher)
{
$this->userProvider = $userProvider;
$this->userPasswordHasher = $userPasswordHasher;
}
/**
* @param UserResolveEvent $event
*/
public function onUserResolve(UserResolveEvent $event): void
{
$user = $this->userProvider->loadUserByUsername($event->getUsername());
if (null === $user) {
return;
}
if (!$this->userPasswordHasher->isPasswordValid($user, $event->getPassword())) {
return;
}
$event->setUser($user);
}
}