partkeepr

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

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 }