ResetPasswordHandler   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 2
c 0
b 0
f 0
lcom 1
cbo 5
dl 0
loc 31
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A handle() 0 9 1
1
<?php
2
3
namespace SumoCoders\FrameworkMultiUserBundle\Command;
4
5
use SumoCoders\FrameworkMultiUserBundle\DataTransferObject\ChangePasswordDataTransferObject;
6
use SumoCoders\FrameworkMultiUserBundle\Exception\InvalidPasswordConfirmationException;
7
use SumoCoders\FrameworkMultiUserBundle\User\BaseUserRepositoryCollection;
8
use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
9
10
class ResetPasswordHandler
11
{
12
    /** @var BaseUserRepositoryCollection */
13
    private $userRepositoryCollection;
14
15
    /** @var EncoderFactoryInterface */
16
    private $encoderFactory;
17
18
    public function __construct(
19
        BaseUserRepositoryCollection $userRepositoryCollection,
20
        EncoderFactoryInterface $encoderFactory
21
    ) {
22
        $this->userRepositoryCollection = $userRepositoryCollection;
23
        $this->encoderFactory = $encoderFactory;
24
    }
25
26
    /**
27
     * @param ChangePasswordDataTransferObject $dataTransferObject
28
     *
29
     * @throws InvalidPasswordConfirmationException
30
     */
31
    public function handle(ChangePasswordDataTransferObject $dataTransferObject): void
32
    {
33
        $user = $dataTransferObject->user;
34
        $user->setPassword($dataTransferObject->newPassword);
35
        $user->encodePassword($this->encoderFactory->getEncoder($user));
36
        $user->clearPasswordResetToken();
37
        $repository = $this->userRepositoryCollection->findRepositoryByClassName(get_class($user));
38
        $repository->save($user);
39
    }
40
}
41