RequestPasswordResetHandler   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 6
dl 0
loc 33
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A handle() 0 10 1
A sendPasswordResetToken() 0 5 1
1
<?php
2
3
namespace SumoCoders\FrameworkMultiUserBundle\Command;
4
5
use SumoCoders\FrameworkMultiUserBundle\DataTransferObject\RequestPasswordDataTransferObject;
6
use SumoCoders\FrameworkMultiUserBundle\Event\PasswordResetTokenCreated;
7
use SumoCoders\FrameworkMultiUserBundle\User\Interfaces\User;
8
use SumoCoders\FrameworkMultiUserBundle\User\BaseUserRepositoryCollection;
9
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
10
11
class RequestPasswordResetHandler
12
{
13
    /** @var BaseUserRepositoryCollection */
14
    private $userRepositoryCollection;
15
16
    /** @var EventDispatcherInterface */
17
    private $dispatcher;
18
19
    public function __construct(
20
        BaseUserRepositoryCollection $userRepositoryCollection,
21
        EventDispatcherInterface $dispatcher
22
    ) {
23
        $this->userRepositoryCollection = $userRepositoryCollection;
24
        $this->dispatcher = $dispatcher;
25
    }
26
27
    public function handle(RequestPasswordDataTransferObject $dataTransferObject): void
28
    {
29
        $user = $this->userRepositoryCollection->findUserByUserName($dataTransferObject->userName);
30
31
        $user->generatePasswordResetToken();
32
        $repository = $this->userRepositoryCollection->findRepositoryByClassName(get_class($user));
33
        $repository->save($user);
34
35
        $this->sendPasswordResetToken($user);
36
    }
37
38
    private function sendPasswordResetToken(User $user): void
39
    {
40
        $event = new PasswordResetTokenCreated($user);
41
        $this->dispatcher->dispatch(PasswordResetTokenCreated::NAME, $event);
42
    }
43
}
44