ConfirmPassword::__invoke()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 18
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 18
rs 9.9332
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
namespace ProjetNormandie\UserBundle\Controller\ResetPassword;
4
5
use Doctrine\ORM\EntityManagerInterface;
6
use Exception;
7
use ProjetNormandie\UserBundle\Entity\User;
8
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
9
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
10
use Symfony\Component\HttpFoundation\JsonResponse;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\HttpKernel\Attribute\AsController;
13
14
#[AsController]
15
class ConfirmPassword extends AbstractController
16
{
17
    public function __construct(
18
        private readonly EntityManagerInterface $em
19
    ) {
20
    }
21
22
23
    /**
24
     * @throws Exception
25
     */
26
    public function __invoke(Request $request): JsonResponse
27
    {
28
        $data = json_decode($request->getContent(), true);
29
        $token = $data['token'];
30
        $plainPassword = $data['plainPassword'];
31
32
        $user = $this->em->getRepository(User::class)->findOneBy(['confirmationToken' => $token]);
33
34
        if (null === $user) {
35
            throw new BadRequestException();
36
        }
37
38
        $user->setPlainPassword($plainPassword);
39
        $user->setConfirmationToken(null);
40
41
        $this->em->flush();
42
43
        return new JsonResponse(['success' => true]);
44
    }
45
}
46