ResetPasswordHandler::handle()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 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