partkeepr

fork of partkeepr
git clone https://git.e1e0.net/partkeepr.git
Log | Files | Refs | Submodules | README | LICENSE

SetupBaseController.php (2820B)


      1 <?php
      2 
      3 namespace PartKeepr\SetupBundle\Controller;
      4 
      5 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
      6 use Symfony\Component\HttpFoundation\JsonResponse;
      7 use Symfony\Component\HttpFoundation\Request;
      8 
      9 class SetupBaseController extends Controller
     10 {
     11     /**
     12      * Handles the given request by setting up a setup_test environment.
     13      *
     14      * @param Request $request
     15      * @param         $uri
     16      * @param array   $parameters
     17      * @param string  $environment
     18      *
     19      * @return JsonResponse|\Symfony\Component\HttpFoundation\Response
     20      */
     21     protected function handleRequest(Request $request, $uri, $parameters = [], $environment = 'setup_test')
     22     {
     23         $data = json_decode($request->getContent(), true);
     24         if (!array_key_exists('authKey', $data) || !$this->verifyAuthKey($data['authKey'])) {
     25             $response['success'] = false;
     26             $response['message'] = 'Invalid Authentication Key';
     27             $response['errors'] = [];
     28 
     29             return new JsonResponse($response);
     30         }
     31 
     32         $parameters['authKey'] = $data['authKey'];
     33 
     34         try {
     35             $kernel = new \AppKernel($environment, true);
     36 
     37             $internalRequest = Request::create($uri, 'GET', $parameters);
     38 
     39             return $kernel->handle($internalRequest);
     40         } catch (\Exception $e) {
     41             $response['success'] = false;
     42             $response['message'] = 'Generic Error';
     43             $response['errors'] = [$e->getMessage()];
     44 
     45             return new JsonResponse($response);
     46         }
     47     }
     48 
     49     protected function ensureAuthKey(Request $request)
     50     {
     51         $data = json_decode($request->getContent(), true);
     52 
     53         if (!is_array($data) || !array_key_exists('authKey', $data) || !$this->verifyAuthKey($data['authKey'])) {
     54             if ($request->query->has('authKey') && $this->verifyAuthKey($request->query->get('authKey'))) {
     55                 return true;
     56             }
     57 
     58             return false;
     59         } else {
     60             return true;
     61         }
     62     }
     63 
     64     protected function getAuthKeyErrorResponse()
     65     {
     66         $response['success'] = false;
     67         $response['message'] = 'Invalid Authentication Key';
     68         $response['errors'] = [];
     69 
     70         return new JsonResponse($response);
     71     }
     72 
     73     protected function verifyAuthKey($givenKey)
     74     {
     75         $key = $this->get('partkeepr.setup.config_service')->getAuthKey();
     76 
     77         if ($key === $givenKey) {
     78             return true;
     79         }
     80 
     81         return false;
     82     }
     83 
     84     protected function dumpConfig(Request $request, $test = true)
     85     {
     86         $data = json_decode($request->getContent(), true);
     87 
     88         $configService = $this->get('partkeepr.setup.config_service');
     89 
     90         $config = $configService->getConfig($data['values']);
     91 
     92         file_put_contents($configService->getConfigPath($test), $config);
     93     }
     94 }