Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 35 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 1 |
UserController | |
0.00% |
0 / 35 |
|
0.00% |
0 / 5 |
132 | |
0.00% |
0 / 1 |
index | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
2 | |||
new | |
0.00% |
0 / 13 |
|
0.00% |
0 / 1 |
12 | |||
show | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
2 | |||
edit | |
0.00% |
0 / 13 |
|
0.00% |
0 / 1 |
20 | |||
delete | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
6 |
1 | <?php |
2 | |
3 | namespace App\Controller\Back; |
4 | |
5 | use App\Entity\User; |
6 | use App\Form\UserEditType; |
7 | use App\Form\UserType; |
8 | use App\Repository\UserRepository; |
9 | use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; |
10 | use Symfony\Component\HttpFoundation\Request; |
11 | use Symfony\Component\HttpFoundation\Response; |
12 | use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; |
13 | use Symfony\Component\Routing\Annotation\Route; |
14 | |
15 | /** |
16 | * @Route("/back/user") |
17 | */ |
18 | class 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 | } |