From cc57aa9b3f1c733f374cecc9853e5dad087e8346 Mon Sep 17 00:00:00 2001 From: Ayoub ZIANI Date: Thu, 9 Feb 2023 16:29:31 +0000 Subject: [PATCH] =?UTF-8?q?S=C3=A9paration=20des=20routes=20en=20fonction?= =?UTF-8?q?=20des=20droits=20des=20utilisateurs=20pour=20question=2016?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 17 ++++ README.md | 6 ++ src/Controller/ApprentiController.php | 45 +++++++++++ src/Controller/AtelierController.php | 98 ------------------------ src/Controller/InstructeurController.php | 83 ++++++++++++++++++++ src/Controller/UserController.php | 2 +- 6 files changed, 152 insertions(+), 99 deletions(-) create mode 100644 .idea/dataSources.xml create mode 100644 src/Controller/ApprentiController.php create mode 100644 src/Controller/InstructeurController.php diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..1597190 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,17 @@ + + + + + sqlite.xerial + true + org.sqlite.JDBC + jdbc:sqlite:\\wsl$\Ubuntu\home\ziani\ProjetCC\dev\cc34\var\data.db + $ProjectFileDir$ + + + file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.39.2/sqlite-jdbc-3.39.2.jar + + + + + \ No newline at end of file diff --git a/README.md b/README.md index b935f4c..6807273 100644 --- a/README.md +++ b/README.md @@ -98,4 +98,10 @@ symfony console doctrine:fixtures:load ### Question 15 ```bash symfony console doctrine:fixtures:load +``` + +### Question 16 +```bash +symfony console make:controller InstructeurController +symfony console make:controller ApprentiController ``` \ No newline at end of file diff --git a/src/Controller/ApprentiController.php b/src/Controller/ApprentiController.php new file mode 100644 index 0000000..a4c5800 --- /dev/null +++ b/src/Controller/ApprentiController.php @@ -0,0 +1,45 @@ +getManager(); + $atelier->addEleve($this->getUser()); + $entityManager->flush(); + return $this->redirectToRoute('app_atelier_show', ["id"=>$atelier->getId()], Response::HTTP_SEE_OTHER); + } + + #[Route('/atelier/{id}/desinscrire', name: 'app_atelier_desinscrire', methods: ['POST'])] + public function desinscrire(Request $request, Atelier $atelier, ManagerRegistry $doctrine): Response + { + $entityManager = $doctrine->getManager(); + $atelier->removeEleve($this->getUser()); + $entityManager->flush(); + return $this->redirectToRoute('app_atelier_show', ["id"=>$atelier->getId()], Response::HTTP_SEE_OTHER); + } + + #[Route('/', name: 'app_atelier_inscrit', methods: ['GET'])] + public function index_inscrit(AtelierRepository $atelierRepository, MarkdownAtelier $markdown): Response + { + $ateliers = $this->getUser()->getFormationsSuivies()->toArray(); + return $this->render('atelier/index_inscrit.html.twig', [ + 'ateliers' => $markdown->parseArray($ateliers), + ]); + } +} diff --git a/src/Controller/AtelierController.php b/src/Controller/AtelierController.php index bb860ce..5dbdb98 100644 --- a/src/Controller/AtelierController.php +++ b/src/Controller/AtelierController.php @@ -24,47 +24,6 @@ class AtelierController extends AbstractController ]); } - #[IsGranted('ROLE_INSTRUCTEUR')] - #[Route('/byme', name: 'app_atelier_by_me', methods: ['GET'])] - public function index_created_by_user(AtelierRepository $atelierRepository, MarkdownAtelier $markdown): Response - { - $ateliers = $atelierRepository->findBy(['instructeur' => $this->getUser()]); - return $this->render('atelier/index.html.twig', [ - 'ateliers' => $markdown->parseArray($ateliers), - ]); - } - - #[IsGranted('ROLE_APPRENTI')] - #[Route('/inscrit', name: 'app_atelier_inscrit', methods: ['GET'])] - public function index_inscrit(AtelierRepository $atelierRepository, MarkdownAtelier $markdown): Response - { - $ateliers = $this->getUser()->getFormationsSuivies()->toArray(); - return $this->render('atelier/index_inscrit.html.twig', [ - 'ateliers' => $markdown->parseArray($ateliers), - ]); - } - - #[IsGranted('ROLE_INSTRUCTEUR')] - #[Route('/new', name: 'app_atelier_new', methods: ['GET', 'POST'])] - public function new(Request $request, AtelierRepository $atelierRepository): Response - { - $atelier = new Atelier(); - $atelier->setInstructeur($this->getUser()); - $form = $this->createForm(AtelierType::class, $atelier); - $form->handleRequest($request); - - if ($form->isSubmitted() && $form->isValid()) { - $atelierRepository->save($atelier, true); - - return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); - } - - return $this->renderForm('atelier/new.html.twig', [ - 'atelier' => $atelier, - 'form' => $form, - ]); - } - #[Route('/{id}', name: 'app_atelier_show', methods: ['GET'])] public function show(Atelier $atelier, MarkdownAtelier $markdownAtelier): Response { @@ -73,61 +32,4 @@ class AtelierController extends AbstractController 'inscrit' => $atelier->getEleves()->contains($this->getUser()), ]); } - - #[IsGranted('ROLE_INSTRUCTEUR')] - #[Route('/{id}/edit', name: 'app_atelier_edit', methods: ['GET', 'POST'])] - public function edit(Request $request, Atelier $atelier, AtelierRepository $atelierRepository): Response - { - if ($atelier->getInstructeur() !== $this->getUser()) { - return $this->render("error.html.twig", [], new Response(null, Response::HTTP_FORBIDDEN)); - } - - $form = $this->createForm(AtelierType::class, $atelier); - $form->handleRequest($request); - - if ($form->isSubmitted() && $form->isValid()) { - $atelierRepository->save($atelier, true); - - return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); - } - - return $this->renderForm('atelier/edit.html.twig', [ - 'atelier' => $atelier, - 'form' => $form, - ]); - } - - #[IsGranted('ROLE_INSTRUCTEUR')] - #[Route('/{id}', name: 'app_atelier_delete', methods: ['POST'])] - public function delete(Request $request, Atelier $atelier, AtelierRepository $atelierRepository): Response - { - if ($atelier->getInstructeur() !== $this->getUser()) { - return $this->render("error.html.twig", [], new Response(null, Response::HTTP_FORBIDDEN)); - } - - if ($this->isCsrfTokenValid('delete' . $atelier->getId(), $request->request->get('_token'))) { - $atelierRepository->remove($atelier, true); - } - - return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); - } - - #[IsGranted('ROLE_APPRENTI')] - #[Route('/{id}/inscrire', name: 'app_atelier_inscription', methods: ['POST'])] - public function inscription(Request $request, Atelier $atelier, ManagerRegistry $doctrine): Response - { - $entityManager = $doctrine->getManager(); - $atelier->addEleve($this->getUser()); - $entityManager->flush(); - return $this->redirectToRoute('app_atelier_show', ["id"=>$atelier->getId()], Response::HTTP_SEE_OTHER); - } - #[IsGranted('ROLE_APPRENTI')] - #[Route('/{id}/desinscrire', name: 'app_atelier_desinscrire', methods: ['POST'])] - public function desinscrire(Request $request, Atelier $atelier, ManagerRegistry $doctrine): Response - { - $entityManager = $doctrine->getManager(); - $atelier->removeEleve($this->getUser()); - $entityManager->flush(); - return $this->redirectToRoute('app_atelier_show', ["id"=>$atelier->getId()], Response::HTTP_SEE_OTHER); - } } diff --git a/src/Controller/InstructeurController.php b/src/Controller/InstructeurController.php new file mode 100644 index 0000000..5e61488 --- /dev/null +++ b/src/Controller/InstructeurController.php @@ -0,0 +1,83 @@ +findBy(['instructeur' => $this->getUser()]); + return $this->render('atelier/index.html.twig', [ + 'ateliers' => $markdown->parseArray($ateliers), + ]); + } + + #[Route('/atelier/new', name: 'app_atelier_new', methods: ['GET', 'POST'])] + public function new(Request $request, AtelierRepository $atelierRepository): Response + { + $atelier = new Atelier(); + $atelier->setInstructeur($this->getUser()); + $form = $this->createForm(AtelierType::class, $atelier); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $atelierRepository->save($atelier, true); + + return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->renderForm('atelier/new.html.twig', [ + 'atelier' => $atelier, + 'form' => $form, + ]); + } + + #[Route('/atelier/{id}/edit', name: 'app_atelier_edit', methods: ['GET', 'POST'])] + public function edit(Request $request, Atelier $atelier, AtelierRepository $atelierRepository): Response + { + if ($atelier->getInstructeur() !== $this->getUser()) { + return $this->render("error.html.twig", [], new Response(null, Response::HTTP_FORBIDDEN)); + } + + $form = $this->createForm(AtelierType::class, $atelier); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $atelierRepository->save($atelier, true); + + return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->renderForm('atelier/edit.html.twig', [ + 'atelier' => $atelier, + 'form' => $form, + ]); + } + + #[Route('/atelier/{id}', name: 'app_atelier_delete', methods: ['POST'])] + public function delete(Request $request, Atelier $atelier, AtelierRepository $atelierRepository): Response + { + if ($atelier->getInstructeur() !== $this->getUser()) { + return $this->render("error.html.twig", [], new Response(null, Response::HTTP_FORBIDDEN)); + } + + if ($this->isCsrfTokenValid('delete' . $atelier->getId(), $request->request->get('_token'))) { + $atelierRepository->remove($atelier, true); + } + + return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); + } +} diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 6e6bad2..084613f 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -14,7 +14,7 @@ use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; #[IsGranted('ROLE_ADMINISTRATEUR')] -#[Route('/user')] +#[Route('/admin/user')] class UserController extends AbstractController { #[Route('/', name: 'app_user_index', methods: ['GET'])]