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 }