getSubscribedEvents()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * (c) FSi sp. z o.o. <[email protected]>
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 */
9
10
declare(strict_types=1);
11
12
namespace FSi\Bundle\AdminSecurityBundle\EventListener;
13
14
use FSi\Bundle\AdminSecurityBundle\Event\AdminSecurityEvents;
15
use FSi\Bundle\AdminSecurityBundle\Event\ResetPasswordRequestEvent;
16
use FSi\Bundle\AdminSecurityBundle\Mailer\MailerInterface;
17
use FSi\Bundle\AdminSecurityBundle\Security\Token\TokenFactoryInterface;
18
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
19
20
class SendPasswordResetMailListener implements EventSubscriberInterface
21
{
22
    /**
23
     * @var MailerInterface
24
     */
25
    private $mailer;
26
27
    /**
28
     * @var TokenFactoryInterface
29
     */
30
    private $tokenFactory;
31
32
    public function __construct(MailerInterface $mailer, TokenFactoryInterface $tokenFactory)
33
    {
34
        $this->mailer = $mailer;
35
        $this->tokenFactory = $tokenFactory;
36
    }
37
38
    public static function getSubscribedEvents(): array
39
    {
40
        return [
41
            AdminSecurityEvents::RESET_PASSWORD_REQUEST => 'onResetPasswordRequest'
42
        ];
43
    }
44
45
    public function onResetPasswordRequest(ResetPasswordRequestEvent $event): void
46
    {
47
        $user = $event->getUser();
48
        $user->setPasswordResetToken($this->tokenFactory->createToken());
49
        $this->mailer->send($user);
50
    }
51
}
52