src/Controller/Home.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\Abstract\MainController;
  4. use App\Entity\User;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. class Home extends MainController {
  9.     /**
  10.      * @Route ("/", name="index")
  11.      */
  12.     public function homePage(): Response
  13.     {
  14.         if (!$this->isLogged()) {
  15.             return $this->redirectToRoute('app_login');
  16.         }
  17.         return $this->redirectToRoute('dashboard');
  18.     }
  19.     /**
  20.      * @Route ("/dashboard", name="dashboard")
  21.      */
  22.     public function homePageLogged(Request $request): Response
  23.     {
  24.         return $this->dashboard($request);
  25.     }
  26.     /**
  27.      * @param Request $request
  28.      *
  29.      * @return Response
  30.      */
  31.     private function dashboard(Request $request): Response
  32.     {
  33.         return match ($this->getUserRole()) {
  34.             User::ROLE_ADMIN
  35.                 => $this->dashboardAdmin($request),
  36.             User::ROLE_MANAGER
  37.                 => $this->dashboardManager($request),
  38.             User::ROLE_AGENT
  39.                 => $this->dashboardAgent($request),
  40.             User::ROLE_CLIENT
  41.                 => $this->dashboardClient($request),
  42.             default
  43.                 => $this->response($requestnull)
  44.         };
  45.     }
  46.     /**
  47.      * @param Request $request
  48.      *
  49.      * @return Response
  50.      */
  51.     private function dashboardAdmin(Request $request): Response
  52.     {
  53.         return $this->response(
  54.             $request,
  55.             'main\\user\\dashboard\\admin.html.twig'
  56.         );
  57.     }
  58.     /**
  59.      * @param Request $request
  60.      *
  61.      * @return Response
  62.      */
  63.     private function dashboardManager(Request $request): Response
  64.     {
  65.         return $this->response(
  66.             $request,
  67.             'main\\user\\dashboard\\manager.html.twig'
  68.         );
  69.     }
  70.     /**
  71.      * @param Request $request
  72.      *
  73.      * @return Response
  74.      */
  75.     private function dashboardAgent(Request $request): Response
  76.     {
  77.         return $this->response(
  78.             $request,
  79.             'main\\user\\dashboard\\agent.html.twig'
  80.         );
  81.     }
  82.     /**
  83.      * @param Request $request
  84.      *
  85.      * @return Response
  86.      */
  87.     private function dashboardClient(Request $request): Response
  88.     {
  89.         return $this->response(
  90.             $request,
  91.             'main\\user\\dashboard\\client.html.twig'
  92.         );
  93.     }
  94. }