src/Controller/SiteController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  8. use Symfony\Contracts\HttpClient\HttpClientInterface;
  9. class SiteController extends AbstractController
  10. {
  11.     /**
  12.      * @Route("/", name="app_home", defaults={"_locale":"%locale%"}, methods={"GET"})
  13.      * @Route("/{_locale}/", requirements={"_locale":"%app_locales%"}, methods={"GET"})
  14.      */
  15.     public function index(): Response
  16.     {
  17.         // return $this->render('home/index.html.twig', [
  18.         //     'controller_name' => 'HomeController',
  19.         // ]);
  20.         return $this->redirectToRoute('app_login');
  21.     }
  22.     /**
  23.      * @Route("/login", name="app_login", defaults={"_locale":"%locale%"}, methods={"GET", "POST"})
  24.      * @Route("/{_locale}/login", requirements={"_locale":"%app_locales%"}, methods={"GET", "POST"})
  25.      */
  26.     public function loginSessionInterface $sessionHttpClientInterface $httpClientRequest $request): Response
  27.     {
  28.         $form_error "";
  29.         $last_name "";
  30.         $user $session->get('user-data');
  31.         if(!$user){
  32.             if ( ($request->request->get('username') !== null) || ($request->request->get('password') != "") ) {
  33.                 if ( ($request->request->get('username') === null) || ($request->request->get('username') == "")) {
  34.                     $form_error "Usuario obligatorio";
  35.                 } else {
  36.                     $last_name $request->request->get('username');
  37.                     if ( ($request->request->get('password') === null) || ($request->request->get('password') == "")) {
  38.                         $form_error "ContraseƱa obligatoria";
  39.                     } else {
  40.                         $response $httpClient->request(
  41.                             'POST',
  42.                             $this->getParameter('API_base_url') . '/oauth/v2/token',
  43.                             [
  44.                                 'body' => [
  45.                                     "client_id" => $this->getParameter('API_client_id'),
  46.                                     "client_secret" => $this->getParameter('API_client_secret'),
  47.                                     "info" => array("uuid" => $this->getParameter('API_token')),
  48.                                     "grant_type" => "password",
  49.                                     "username" => $request->request->get('username'),
  50.                                     "password" => $request->request->get('password'),
  51.                                     "lang" => "es"
  52.                                 ]
  53.                             ]
  54.                         );
  55.                         // dd($response->getContent(false));
  56.                         $decodedPayload = (array) json_decode($response->getContent(false));
  57.                         
  58.                         if ( array_key_exists("error"$decodedPayload)  || !isset($decodedPayload['access_token'])) {
  59.                             $session->set('user-session'null);
  60.                             $session->set('user-data'null);
  61.                             $form_error "Usuario incorrecto";
  62.                         } else {
  63.                             $session->set('user-session'$decodedPayload);
  64.                             
  65.                             $response $httpClient->request(
  66.                                 'GET',
  67.                                 $this->getParameter('API_base_url') . '/api/user/token/' $decodedPayload['access_token'],
  68.                                 [
  69.                                     'headers' => [
  70.                                         'Authorization' => 'Bearer ' $decodedPayload['access_token'],
  71.                                     ]
  72.                                 ]
  73.                             );
  74.                             $decodedPayload = (array) json_decode($response->getContent(false));
  75.                             if ( array_key_exists("error"$decodedPayload) ) {
  76.                                 $session->set('user-session'null);
  77.                                 $session->set('user-data'null);
  78.                                 $form_error "Usuario desactivado";
  79.                             }else{
  80.                                 $decodedPayload $response->toArray(); 
  81.                                 
  82.                                 
  83.                                 if( in_array("ROLE_ADMIN"$decodedPayload['roleNames']) || in_array("ROLE_GESTOR"$decodedPayload['roleNames']) ||  in_array("ROLE_NEWS"$decodedPayload['roleNames'])){
  84.                                     $session->set('user-data'$decodedPayload);
  85.                                     if(in_array("ROLE_ADMIN",$decodedPayload["roleNames"]) || in_array("ROLE_NEWS",$decodedPayload["roleNames"]) || in_array("ROLE_GESTOR",$decodedPayload["roleNames"])){
  86.                                         if(!in_array("ROLE_GESTOR",$decodedPayload["roleNames"])){
  87.                                             return $this->redirectToRoute('news');
  88.                                         }else{
  89.                                             return $this->redirectToRoute('matches');
  90.                                         }
  91.                                     }else{
  92.                                         return $this->redirectToRoute('app_logout');
  93.                                     }
  94.                                 }else{
  95.                                     $session->set('user-session'null);
  96.                                     $session->set('user-data'null);
  97.                                     $form_error "Usuario no autorizado";
  98.                                 }    
  99.                             }                         
  100.                         }
  101.                     }
  102.                 }    
  103.             }
  104.             
  105.             //dd($form_error);
  106.             return $this->render('security/login.html.twig', [
  107.                 'controller_name' => 'SiteController',
  108.                 'error' => $form_error,
  109.                 'last_username' => $last_name,
  110.                 'url_api' => $this->getParameter('API_base_url') . '/api/',
  111.             ]);
  112.         }else{
  113.             if(in_array("ROLE_ADMIN",$user["roleNames"]) || in_array("ROLE_NEWS",$user["roleNames"]) || in_array("ROLE_GESTOR",$user["roleNames"])){
  114.                 if(!in_array("ROLE_GESTOR",$user["roleNames"])){
  115.                     return $this->redirectToRoute('news');
  116.                 }else{
  117.                     return $this->redirectToRoute('matches');
  118.                 }
  119.             }else{
  120.                 return $this->redirectToRoute('app_logout');
  121.             }
  122.         }
  123.     }
  124.     /**
  125.      * @Route("/logout", name="app_logout", defaults={"_locale":"%locale%"}, methods={"GET", "POST"})
  126.      * @Route("/{_locale}/logout", requirements={"_locale":"%app_locales%"}, methods={"GET", "POST"})
  127.      */
  128.     public function logoutSessionInterface $sessionRequest $request): Response
  129.     {
  130.         $session->set('user-session'null);
  131.         $session->set('user-data'null);
  132.         return $this->redirectToRoute('app_login');
  133.     }
  134. }