src/Controller/ApiCuController.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\JsonResponse;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use App\Repository\PcConvocatoriasRepository;
  9. use App\Entity\PcConvocatorias;
  10. use App\Entity\PcCriterios;
  11. use App\Repository\PcCriteriosRepository;
  12. use App\Entity\PcCriteriosConvocatorias;
  13. use App\Repository\PcCriteriosConvocatoriasRepository;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
  16. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  17. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  18. use App\Service\AuthClaveUnicaService;
  19. use App\Entity\CuToken;
  20. use App\Repository\CuTokenRepository;
  21. /**
  22.  * @Route("/api/cu", name="api_cu_")
  23.  */
  24. class ApiCuController extends AbstractController
  25. {
  26.     #[Route('/login'name'login'methods: ['GET'])]
  27.     public function login(AuthClaveUnicaService $authClaveUnicaService): JsonResponse
  28.     {
  29.         return new JsonResponse(['claveUnicaUrlToLogin'=>$authClaveUnicaService->getUrlToLoginCu()]);
  30.     }
  31.     #[Route('/logout'name'logout'methods: ['GET'])]
  32.     public function logout(AuthClaveUnicaService $authClaveUnicaService): JsonResponse
  33.     {
  34.         // La autenticación será manejada automáticamente por el firewall
  35.         return new JsonResponse(['claveUnicaUrlToLogout'=>$authClaveUnicaService->getUrlToLogout()]);
  36.     }
  37.     #[Route('/callback'name'callback'methods: ['POST'])]
  38.     public function callbackState(
  39.         Request $request,
  40.         CuTokenRepository $cuTokenRepository
  41.     ): JsonResponse
  42.     {
  43.         try {
  44.             $data json_decode($request->getContent(), true);
  45.             $cuToken $cuTokenRepository->findOneByState($data['state']);
  46.             if (!$cuToken) {
  47.                 return new JsonResponse(['error' => 'Estado no encontrado'], JsonResponse::HTTP_NOT_FOUND);
  48.             }
  49.             $token $cuToken->getToken();
  50.             $cuTokenRepository->remove($cuTokentrue);
  51.             return new JsonResponse(['token'=>$token]);
  52.         } catch (\Exception $e) {
  53.             return new JsonResponse(['error' => 'Error de servidor''detalle' => $e->getMessage()], 500);
  54.         }
  55.     }
  56. }