src/Controller/DefaultController.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Session\Session;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Routing\Generator\UrlGenerator;
  9. use App\Entity\AppMensaje;
  10. use App\Repository\AppMensajeRepository;
  11. use App\Entity\LoginLog;
  12. use App\Repository\LoginLogRepository;
  13. use App\Service\AuthService;
  14. use App\Service\PostulacionService;
  15. use App\Service\AuthClaveUnicaService;
  16. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  17. use Symfony\Component\HttpFoundation\HeaderUtils;
  18. use Symfony\Component\Mime\Email;
  19. //use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  20. use Symfony\Component\Mailer\MailerInterface;
  21. use Symfony\Component\Mailer\Mailer;
  22. use Symfony\Component\Mailer\Bridge\Amazon\Transport\SesSmtpTransport;
  23. use DateTime;
  24. use DateTimeInterface;
  25. class DefaultController extends AbstractController
  26. {
  27.     #[Route('/'name'default')]
  28.     public function default(
  29.         Request $request,
  30.         AuthService $authService
  31.         ): Response
  32.     {
  33.         /*
  34.         if (!($authService->isValidaSessionUsuario($request))){
  35.             return $this->redirect($this->generateUrl('sesionExpirada'));
  36.         }else{
  37.             return $this->redirect($this->generateUrl('home'));
  38.         }
  39.         */
  40.         return $this->render('default/index.html.twig', [
  41.         ]);
  42.     }
  43.     /*
  44.     #[Route('/testmail', name: 'testmail')]
  45.     public function testmail(
  46.         Request $request,
  47.         MailerInterface $mailer
  48.     ){
  49.         echo "testing mail<br>";
  50.         //docs:
  51.         //https://github.com/symfony/amazon-mailer
  52.         //https://symfony.com/doc/current/mailer.html
  53.         try{
  54.             $transport = new SesSmtpTransport(
  55.                 'AKIA3RSIM2NRIV7M6YVO',
  56.                 'BIqUTpjtfHD9fTiv6dig6z2vnY2J/QzhpBJwcG9/HJtJ',
  57.                 'us-east-1'
  58.             );
  59.             $transport = new SesSmtpTransport(
  60.                 $_ENV['MAILER_SES_USER'],
  61.                 $_ENV['MAILER_SES_PASS'],
  62.                 $_ENV['MAILER_SES_REGION']
  63.             );
  64.             $mailer = new Mailer($transport);
  65.             $email = (new Email())
  66.                 ->from($_ENV['MAILER_SES_SENDER'])
  67.                 ->to('eduardo.rojas@cultura.gob.cl')
  68.                 //->to('alfonso.calderon@cultura.gob.cl')
  69.                 //->cc('eduardo.rojas@cultura.gob.cl')
  70.                 //->to('alfonso.calderon@cultura.gob.cl')
  71.                 //->to('eduardo.rojasc@gmail.com')
  72.                 //->bcc('bcc@example.com')
  73.                 //->replyTo('fabien@example.com')
  74.                 //->priority(Email::PRIORITY_HIGH)
  75.                 ->replyTo($_ENV['MAILER_SES_REPLY_TO'])
  76.                 ->subject('Test mail Amazon for Symfony Mailer!')
  77.                 ->text('Este es un test de erojasc!')
  78.                 ->html('<p>Este es un test de erojasc!</p>');
  79.             if ($_ENV['MAILER_SES_CC']!=""){
  80.                 $email->cc($_ENV['MAILER_SES_CC']);
  81.             }
  82.             if ($_ENV['MAILER_SES_BCC']!=""){
  83.                 $email->bcc($_ENV['MAILER_SES_BCC']);
  84.             }
  85.             $mailer->send($email);
  86.         }
  87.         catch(\Exception $e){
  88.             print_r($e->getMessage());
  89.         }
  90.         die;
  91.     }
  92.     */
  93.     #[Route('/home'name'home')]
  94.     public function home(
  95.         Request $request,
  96.         AuthService $authService,
  97.         AppMensajeRepository $appMensajeRepository,
  98.         PostulacionService $postulacionService
  99.     ){
  100.         if (!($authService->isValidaSessionUsuario($request))){
  101.             //Verificar si token ha expirado
  102.             $this->addFlash('warning''Sesión Expirada!');
  103.             $authService->clearSessionUsuario($request);
  104.             return $this->redirect($this->generateUrl('sesionExpirada'));
  105.         }
  106.         if ($postulacionService->hasPostulacionEnviadaUsuarioSession($request)){
  107.             $appMensaje$appMensajeRepository->findOneBy(['name'=>'home_has_postulacion_enviada_mensaje_inicial']);
  108.             $msjInicial =  $appMensaje->getMensaje();
  109.             $urlCertificadoPostulacion =  $this->generateUrl('postulacion_certificado', array('disposition' => 'ATTACHMENT'), UrlGenerator::ABSOLUTE_URL);
  110.             return $this->renderForm('default/home_has_postulacion_enviada.html.twig', [
  111.                 'msjInicial'=>$msjInicial,
  112.                 'urlCertificadoPostulacion'=>$urlCertificadoPostulacion
  113.             ]);
  114.         }else{
  115.             $botonLabel="Iniciar solicitud de inscripción";
  116.             $appMensaje$appMensajeRepository->findOneBy(['name'=>'home_mensaje_inicial']);
  117.             $msjInicial =  $appMensaje->getMensaje();
  118.             if ($postulacionService->hasPostulacionCreadaUsuarioSession($request)){
  119.                 $postulacion $postulacionService->getPostulacionUsuarioSession($request);
  120.                 if ($postulacion->hasAvanceGuardado()){
  121.                     $botonLabel="Continuar Inscripción";
  122.                     $appMensaje$appMensajeRepository->findOneBy(['name'=>'home_has_postulacion_sin_enviar_mensaje_inicial']);
  123.                     $msjInicial =  $appMensaje->getMensaje();
  124.                 }
  125.             }
  126.             //$this->addFlash('success', 'Tu solicitud de inscripción en el registro de Puntos de Cultura Comunitaria fue guardada exitosamente');
  127.             //$this->addFlash('danger', 'Email no Enviado [Se ha producido un error con el envio de la copia de tu solicitud al correo que indicaste {"sdfsdf"}]');
  128.             return $this->renderForm('default/home.html.twig', [
  129.                 'msjInicial'=>$msjInicial,
  130.                 'botonLabel'=>$botonLabel
  131.             ]);
  132.         }
  133.     }
  134.     #[Route('/sesionExpirada'name'sesionExpirada')]
  135.     public function sesionExpirada(
  136.         AppMensajeRepository $appMensajeRepository,
  137.         AuthClaveUnicaService $authClaveUnicaService
  138.     ){
  139.         $appMensaje$appMensajeRepository->findOneBy(['name'=>'sesion_expirada_mensaje_inicial']);
  140.         $msjInicial =  $appMensaje->getMensaje();
  141.         $urlBase $authClaveUnicaService->getUrlToLogin();
  142.         return $this->render('default/sesionExpirada.html.twig', [
  143.             'msjInicial'=>$msjInicial,
  144.             'urlBase' => $urlBase
  145.         ]);
  146.     }
  147.     #[Route('/tokenNoValido'name'tokenNoValido')]
  148.     public function tokenNoValido(
  149.         AppMensajeRepository $appMensajeRepository
  150.     ){
  151.         $appMensaje$appMensajeRepository->findOneBy(['name'=>'sesion_expirada_mensaje_inicial']);
  152.         $msjInicial =  $appMensaje->getMensaje();
  153.         return $this->render('default/tokenNoValido.html.twig', [
  154.             'msjInicial'=>$msjInicial
  155.         ]);
  156.     }
  157.     #[Route('/login'name'login')]
  158.     public function login(
  159.         Request $request,
  160.         AuthService $authService,
  161.         LoginLogRepository $loginLogRepository
  162.     ){
  163.         $validarTokenUsuario $authService->validarTokenUsuario($request);
  164.         //echo "validarTokenUsuario";
  165.         //die;
  166.         //Registrar loginLog - Incio
  167.         $loginLog = new LoginLog();
  168.         $now = new DateTime();
  169.         //$loginLog->setCreatedAt($now);
  170.         $loginLog->updateTimestamps();
  171.         if ($validarTokenUsuario){
  172.             $data_token =  $authService->getDataToken($request);
  173.             $loginLog->setToken($data_token->jwt);
  174.             // $loginLog->setUserRut($data_token->user_token->run);
  175.             // $loginLog->setUserNombre($data_token->user_token->nombres);
  176.             // $loginLog->setUserApellidos($data_token->user_token->apellidos);
  177.             $loginLog->setUserEmail("");
  178.             //$loginLog->setUserEmail($data_token->user_token->run);
  179.             $loginLog->setOrganizacionId($data_token->organizacion_token->id);
  180.             $loginLog->setOrganizacionRut($data_token->organizacion_token->rut);
  181.             $loginLog->setOrganizacionNombre($data_token->organizacion_token->nombre);
  182.         }else{
  183.             $loginLog->setToken($request->query->get('token'));
  184.             return $this->redirect($this->generateUrl('tokenNoValido'));
  185.         }
  186.         $loginLog->setTokenValido($validarTokenUsuario);
  187.         $loginLogRepository->save($loginLog,true);
  188.         //Registrar loginLog - Fin
  189.         return $this->redirect($this->generateUrl('home'));
  190.     }
  191.     #[Route('/logout'name'logout')]
  192.     public function logout(
  193.         Request $request,
  194.         AppMensajeRepository $appMensajeRepository,
  195.         AuthService $authService
  196.     ){
  197.         if ($authService->clearSessionUsuario($request)){
  198.             $this->addFlash('success''Sesión Cerrada Exitosamente!');
  199.         }
  200.         $appMensaje$appMensajeRepository->findOneBy(['name'=>'logout_mensaje_inicial']);
  201.         $msjInicial =  $appMensaje->getMensaje();
  202.         return $this->renderForm('default/logout.html.twig', [
  203.             'msjInicial'=>$msjInicial
  204.         ]);
  205.         //return $this->redirect($this->generateUrl('login'));
  206.     }
  207. //    #[Route('/documento/get/{filename}/{relative_path}/{disposition}', name: 'documento_get')]
  208.     #[Route('/documento/get/{filename}/{relative_path}/{disposition}'name'documento_get')]
  209.     public function documento_get(
  210.         Request $request,
  211.         string $filename,
  212.        string $relative_path,
  213.         string $disposition
  214.         ):Response
  215.     {
  216.         if (($disposition=="") || ($disposition=="ATTACHMENT")){
  217.             $dispositionResponseHeaderBag=ResponseHeaderBag::DISPOSITION_ATTACHMENT;
  218.         }else{
  219.             $dispositionResponseHeaderBag=ResponseHeaderBag::DISPOSITION_INLINE;
  220.         }
  221.         $projectRoot $this->getParameter('kernel.project_dir');
  222.         $bin_data file_get_contents($projectRoot."/public/documentos/".$relative_path."/".$filenametrue);
  223.         $response = new Response($bin_data);
  224.         $disposition HeaderUtils::makeDisposition(
  225.             $dispositionResponseHeaderBag,
  226.             $filename
  227.         );
  228.         $response->headers->set('Content-Disposition'$disposition);
  229.         $response->headers->set('Content-Type''application/pdf');
  230.         $response->headers->set('Content-Length'strlen($bin_data));
  231.         return $response;
  232.     }
  233. }