Completed
Push — master ( 3ae4c0...4ead59 )
by Valentyn
02:15
created

UserPasswordController   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 8
dl 0
loc 27
ccs 0
cts 9
cp 0
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A postUserPassword() 0 17 3
1
<?php
2
3
namespace App\Users\Controller;
4
5
use App\Controller\BaseController;
6
use App\Users\Entity\User;
7
use App\Users\Request\ChangePasswordRequest;
8
use Symfony\Component\HttpFoundation\JsonResponse;
9
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
10
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
11
use Symfony\Component\Routing\Annotation\Route;
12
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
13
14
class UserPasswordController extends BaseController
15
{
16
    /**
17
     * @Route("/api/users/{id}/password", methods={"POST"}, requirements={"id"="\d+"})
18
     * @param ChangePasswordRequest $request
19
     * @param User $user
20
     * @param UserPasswordEncoderInterface $passwordEncoder
21
     * @return JsonResponse
22
     */
23
    public function postUserPassword(ChangePasswordRequest $request, User $user, UserPasswordEncoderInterface $passwordEncoder)
24
    {
25
        $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
26
27
        if ($user->getId() !== $this->getUser()->getId()) {
28
            throw new AccessDeniedHttpException();
29
        }
30
31
        if ($user->isPasswordValid($request->get('old_password'), $passwordEncoder) === false) {
32
            throw new BadRequestHttpException();
33
        }
34
35
        $user->setPlainPassword($request->get('new_password'));
36
        $this->getDoctrine()->getManager()->flush();
37
38
        return new JsonResponse();
39
    }
40
}
41