src/AppBundle/Controller/ui/DictionaryController.php line 25

Open in your IDE?
  1. <?php
  2. namespace AppBundle\Controller\ui;
  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\Cookie;
  8. use Symfony\Component\Routing\Exception\ResourceNotFoundException;
  9. use Psr\Log\LoggerInterface;
  10. use AppBundle\Service\HttpHelper;
  11. class DictionaryController extends AbstractController implements TokenAuthenticatedController {
  12.     /*
  13.      * @var string
  14.      */
  15.     /* private $csproRestApiUrl; */
  16.     public function __construct(private \AppBundle\Service\HttpHelper $httpHelper /* , string $csproRestApiUrl */) {
  17.         //   $this->csproRestApiUrl = $csproRestApiUrl;
  18.     }
  19.     #[Route('/dashboard'name'dashboard'methods: ['GET'])]
  20.     public function dashboardAction(Request $request): Response {
  21.         $this->denyAccessUnlessGranted('ROLE_DATA_ALL');
  22.         $client $this->httpHelper;
  23.         //set the oauth token
  24.         $access_token $request->cookies->has('access_token') ? $request->cookies->get('access_token') : "";
  25.         $authHeader 'Bearer ' $access_token;
  26.         //$dictionariesEndpoint = $this->csproRestApiUrl . 'dictionaries/';
  27.         $dictionariesEndpoint $this->getParameter('cspro_rest_api_url') . 'dictionaries/';
  28.         $response $client->request('GET''dictionaries/'null, ['Authorization' => $authHeader'Accept' => 'application/json']);
  29.         //unauthorized or expired  redirect to logout page
  30.         if ($response->getStatusCode() == 401) {
  31.             return $this->redirectToRoute('logout');
  32.         }
  33.         $dictionaries json_decode($response->getBody(), null512JSON_THROW_ON_ERROR);
  34.         return $this->render('data.twig', ['dictionaries' => $dictionaries]);
  35.     }
  36.     #[Route('/dashboard/dictionaries/{dictname}'name'downloadDictionary'methods: ['GET'])]
  37.     public function downloadAction(Request $request$dictname): Response {
  38.         $this->denyAccessUnlessGranted('ROLE_DATA_ALL');
  39.         $client $this->httpHelper;
  40.         //set the oauth token
  41.         $access_token $request->cookies->has('access_token') ? $request->cookies->get('access_token') : "";
  42.         $authHeader 'Bearer ' $access_token;
  43.         //download the data
  44.         $response $client->request('GET''dictionaries/' $dictname '/syncspec'null, ['Authorization' => $authHeader'Accept' => 'application/json']);
  45.         //unauthorized or expired  redirect to logout page
  46.         if ($response->getStatusCode() == 401) {
  47.             return $this->redirectToRoute('logout');
  48.         }
  49.         $downloadResponse = new Response($response->getBody(), $response->getStatusCode());
  50.         if (isset($response->getHeader('Content-Disposition')[0])) {
  51.             $downloadResponse->headers->set('Content-Disposition'$response->getHeader('Content-Disposition')[0]);
  52.         }
  53.         return $downloadResponse;
  54.     }
  55.     #[Route('/dashboard/dictionaries'name'upload'methods: ['POST'])]
  56.     public function uploadAction(Request $request): Response {
  57.         $this->denyAccessUnlessGranted('ROLE_DATA_ALL');
  58.         $client $this->httpHelper;
  59.         //set the oauth token
  60.         $access_token $request->cookies->has('access_token') ? $request->cookies->get('access_token') : "";
  61.         $authHeader 'Bearer ' $access_token;
  62.         //get the json user info to add 
  63.         $body $request->getContent();
  64.         //upload dictionary
  65.         $response $client->request('POST''dictionaries/'$body, ['Authorization' => $authHeader'Content-Type' => 'text/plain; charset=utf-8']);
  66.         //unauthorized or expired  redirect to logout page
  67.         if ($response->getStatusCode() == 401) {
  68.             return $this->redirectToRoute('logout');
  69.         }
  70.         //create a symfony response object to return
  71.         $uploadResponse = new Response($response->getBody(), $response->getStatusCode());
  72.         $uploadResponse->headers->set('Content-Type'$response->getHeader('Content-Type'));
  73.         return $uploadResponse;
  74.     }
  75.     #[Route('/dashboard/dictionaries/{dictname}/data'name'deleteDictionaryData'methods: ['DELETE'])]
  76.     public function deleteDictionaryDataAction(Request $request$dictname) {
  77.         $this->denyAccessUnlessGranted('ROLE_DATA_ALL');
  78.         $client $this->httpHelper;
  79.         //set the oauth token
  80.         $access_token $request->cookies->has('access_token') ? $request->cookies->get('access_token') : "";
  81.         $authHeader 'Bearer ' $access_token;
  82.         //delete the dictionary data
  83.         $response $client->request('DELETE''dictionaries/' $dictname '/data'null, ['Authorization' => $authHeader'Accept' => 'application/json']);
  84.         //unauthorized or expired redirect to logout page
  85.         if ($response->getStatusCode() == 401) {
  86.             return $this->redirectToRoute('logout');
  87.         }
  88.         //create a symfony response object to return
  89.         $deleteResponse = new Response($response->getBody(), $response->getStatusCode());
  90.         $deleteResponse->headers->set('Content-Type'$response->getHeader('Content-Type'));
  91.         return $deleteResponse;
  92.     }
  93.     #[Route('/dashboard/dictionaries/{dictname}'name'deleteDictionary'methods: ['DELETE'])]
  94.     public function deleteAction(Request $request$dictname): Response {
  95.         $this->denyAccessUnlessGranted('ROLE_DATA_ALL');
  96.         $client $this->httpHelper;
  97.         //set the oauth token
  98.         $access_token $request->cookies->has('access_token') ? $request->cookies->get('access_token') : "";
  99.         $authHeader 'Bearer ' $access_token;
  100.         //delete the dictionary
  101.         $response $client->request('DELETE''dictionaries/' $dictnamenull, ['Authorization' => $authHeader'Accept' => 'application/json']);
  102.         //unauthorized or expired  redirect to logout page
  103.         if ($response->getStatusCode() == 401) {
  104.             return $this->redirectToRoute('logout');
  105.         }
  106.         //create a symfony response object to return
  107.         $deleteResponse = new Response($response->getBody(), $response->getStatusCode());
  108.         $deleteResponse->headers->set('Content-Type'$response->getHeader('Content-Type'));
  109.         return $deleteResponse;
  110.     }
  111. }