SetupController.php (4666B)
1 <?php 2 3 namespace PartKeepr\SetupBundle\Controller; 4 5 use Doctrine\DBAL\Exception\DriverException; 6 use Symfony\Component\HttpFoundation\JsonResponse; 7 use Symfony\Component\HttpFoundation\Request; 8 use Symfony\Component\HttpFoundation\Response; 9 use Symfony\Component\Routing\Annotation\Route; 10 11 class SetupController extends SetupBaseController 12 { 13 /** 14 * @Route("/setup/_int_test_connectivity") 15 */ 16 public function intTestConnectivityAction(Request $request) 17 { 18 if (!$this->ensureAuthKey($request)) { 19 return $this->getAuthKeyErrorResponse(); 20 } 21 22 $response = [ 23 'success' => true, 24 'errors' => [], 25 'message' => 'Connection successful', 26 ]; 27 28 try { 29 $this->get('doctrine.dbal.default_connection')->connect(); 30 } catch (DriverException $e) { 31 $response['success'] = false; 32 $response['message'] = 'Connection Error'; 33 $response['errors'] = [$e->getMessage()]; 34 } 35 36 return new JsonResponse($response); 37 } 38 39 /** 40 * @Route("/setup/_int_test_dbversion") 41 */ 42 public function intTestDBVersionAction(Request $request) 43 { 44 if (!$this->ensureAuthKey($request)) { 45 return $this->getAuthKeyErrorResponse(); 46 } 47 48 $response = [ 49 'success' => true, 50 'errors' => [], 51 'message' => 'Connection successful', 52 ]; 53 54 try { 55 $db = $this->get('doctrine.dbal.default_connection'); 56 $db->connect(); 57 } catch (DriverException $e) { 58 $response['success'] = false; 59 $response['message'] = 'Connection Error'; 60 $response['errors'] = [$e->getMessage()]; 61 62 return new JsonResponse($response); 63 } 64 65 $retArr = $db->fetchArray("SELECT version();"); 66 $version = $retArr[0]; 67 68 if (preg_match('/^([0-9]*)\.([0-9]*)\.([0-9]*)-mariadb.*/i', $version, $matches)) { 69 // We are running mariadb. This could cause problems. 70 $major = $matches[1]; 71 $minor = $matches[2]; 72 if ($major == 10 && $minor >= 2) { 73 $response['success'] = false; 74 $response['message'] = 'Incompatible MariaDB version'; 75 $response['errors'] = ['Current dependency Symfony is incompatible with MariaDB >= 10.2.']; 76 77 return new JsonResponse($response); 78 } 79 } 80 81 return new JsonResponse($response); 82 } 83 84 /** 85 * @Route("/setup/testDBVersion") 86 * 87 * @param Request $request 88 * 89 * @return Response 90 */ 91 public function testDBVersionAction(Request $request) 92 { 93 $this->dumpConfig($request); 94 95 $response = $this->handleRequest($request, '/setup/_int_test_dbversion'); 96 97 return new Response($response->getContent()); 98 } 99 100 /** 101 * @Route("/setup/testConnectivity") 102 * 103 * @param Request $request 104 * 105 * @return Response 106 */ 107 public function testConnectivityAction(Request $request) 108 { 109 $this->dumpConfig($request); 110 111 $response = $this->handleRequest($request, '/setup/_int_test_connectivity'); 112 113 return new Response($response->getContent()); 114 } 115 116 /** 117 * @Route("/setup/saveConfig") 118 * 119 * @param Request $request 120 * 121 * @return JsonResponse 122 */ 123 public function saveConfigAction(Request $request) 124 { 125 $this->dumpConfig($request, false); 126 127 $response = [ 128 'success' => true, 129 'errors' => [], 130 'message' => 'Configuration saved successful', 131 ]; 132 133 return new JsonResponse($response); 134 } 135 136 /** 137 * @Route("/setup/webserverTest") 138 */ 139 public function webserverTestAction() 140 { 141 $response = [ 142 'success' => true, 143 'message' => 'Web Server configuration OK', 144 'errors' => [], 145 ]; 146 147 return new JsonResponse($response); 148 } 149 150 /** 151 * @Route("/setup/generateAuthKey") 152 */ 153 public function generateAuthKeyAction() 154 { 155 $response = [ 156 'success' => true, 157 'message' => 'Auth key successfully generated', 158 'errors' => [], 159 ]; 160 161 $parameters = [ 162 'authkey' => $this->get('partkeepr.setup.config_service')->generateSecret(), 163 ]; 164 165 $contents = $this->container->get('templating')->render('PartKeeprSetupBundle::authkey.php.twig', $parameters); 166 file_put_contents($this->get('partkeepr.setup.config_service')->getAuthKeyPath(), $contents); 167 168 return new JsonResponse($response); 169 } 170 }