Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
UserController
0.00% covered (danger)
0.00%
0 / 35
0.00% covered (danger)
0.00%
0 / 5
132
0.00% covered (danger)
0.00%
0 / 1
 index
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 new
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
12
 show
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 edit
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
20
 delete
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace App\Controller\Back;
4
5use App\Entity\User;
6use App\Form\UserEditType;
7use App\Form\UserType;
8use App\Repository\UserRepository;
9use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
10use Symfony\Component\HttpFoundation\Request;
11use Symfony\Component\HttpFoundation\Response;
12use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
13use Symfony\Component\Routing\Annotation\Route;
14
15/**
16 * @Route("/back/user")
17 */
18class UserController extends AbstractController
19{
20    /**
21     * @Route("/", name="app_back_user_index", methods={"GET"})
22     */
23    public function index(UserRepository $userRepository): Response
24    {
25        return $this->render('back/user/index.html.twig', [
26            'users' => $userRepository->findAll(),
27        ]);
28    }
29
30    /**
31     * @Route("/new", name="app_back_user_new", methods={"GET", "POST"})
32     */
33    public function new(
34        Request $request, 
35        UserRepository $userRepository, 
36        UserPasswordHasherInterface $userPasswordHasherInterface
37        ): Response
38    {
39        $user = new User();
40        $form = $this->createForm(UserType::class, $user);
41        $form->handleRequest($request);
42
43        if ($form->isSubmitted() && $form->isValid()) {
44            // ! le mot de passe n'est pas hashé
45            // TODO : has du mot de passe avant l'insertion en BDD
46            // UserPasswordHasherInterface le service de hash de mot de passe
47            // il nous faut le mot de passe : 
48            // * on le récupère de l'objet remplit par le formulaire
49            $plainPassword = $user->getPassword();
50            // je hash le mot de passe
51            $hashedPassword = $userPasswordHasherInterface->hashPassword($user, $plainPassword);
52            // * j'oublie pas de mettre à jour mon objet
53            $user->setPassword($hashedPassword);
54            // je met à jour la BDD
55            $userRepository->add($user, true);
56
57            return $this->redirectToRoute('app_back_user_index', [], Response::HTTP_SEE_OTHER);
58        }
59
60        return $this->renderForm('back/user/new.html.twig', [
61            'user' => $user,
62            'form' => $form,
63        ]);
64    }
65
66    /**
67     * @Route("/{id}", name="app_back_user_show", methods={"GET"})
68     */
69    public function show(User $user): Response
70    {
71        return $this->render('back/user/show.html.twig', [
72            'user' => $user,
73        ]);
74    }
75
76    /**
77     * @Route("/{id}/edit", name="app_back_user_edit", methods={"GET", "POST"})
78     */
79    public function edit(
80        Request $request, 
81        User $user, 
82        UserRepository $userRepository, 
83        UserPasswordHasherInterface $userPasswordHasherInterface
84        ): Response
85    {
86        $form = $this->createForm(UserEditType::class, $user);
87        $form->handleRequest($request);
88
89        if ($form->isSubmitted() && $form->isValid()) {
90            // ! le mot de passe n'est pas hashé
91            // TODO : has du mot de passe avant la mise à jour en BDD
92            // UserPasswordHasherInterface le service de hash de mot de passe
93            // il nous faut le mot de passe : 
94            // * on le récupère depuis la requete 
95            // car on a désactivé la mise à jour auto par le formulaire
96            $plainPassword = $request->request->get("password");
97            
98            if (!empty($plainPassword)){
99                // je hash le mot de passe
100                $hashedPassword = $userPasswordHasherInterface->hashPassword($user, $plainPassword);
101                // * j'oublie pas de mettre à jour mon objet
102                $user->setPassword($hashedPassword);     
103            }
104        
105            // je met à jour la BDD
106            $userRepository->add($user, true);
107            
108
109            return $this->redirectToRoute('app_back_user_index', [], Response::HTTP_SEE_OTHER);
110        }
111
112        return $this->renderForm('back/user/edit.html.twig', [
113            'user' => $user,
114            'form' => $form,
115        ]);
116    }
117
118    /**
119     * @Route("/{id}", name="app_back_user_delete", methods={"POST"})
120     */
121    public function delete(Request $request, User $user, UserRepository $userRepository): Response
122    {
123        if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
124            $userRepository->remove($user, true);
125        }
126
127        return $this->redirectToRoute('app_back_user_index', [], Response::HTTP_SEE_OTHER);
128    }
129}