|
5 | 5 | use DI\Container;
|
6 | 6 | use Doctrine\DBAL\Connection;
|
7 | 7 | use Doctrine\DBAL\DriverManager;
|
| 8 | +use Doctrine\DBAL\Tools\DsnParser; |
| 9 | +use Dotenv\Dotenv; |
| 10 | +use Dotenv\Exception\ValidationException; |
8 | 11 | use Exception;
|
9 | 12 | use Naisdevice\Jita\Controllers\ApiController;
|
10 | 13 | use Naisdevice\Jita\Controllers\IndexController;
|
|
26 | 29 |
|
27 | 30 | require __DIR__ . '/../vendor/autoload.php';
|
28 | 31 |
|
| 32 | +$dotenv = Dotenv::createImmutable(dirname(__DIR__)); |
| 33 | +$dotenv->safeLoad(); |
| 34 | + |
| 35 | +try { |
| 36 | + $requiredEnvVars = [ |
| 37 | + 'ISSUER_ENTITY_ID', |
| 38 | + 'LOGIN_URL', |
| 39 | + 'LOGOUT_URL', |
| 40 | + 'SAML_CERT', |
| 41 | + 'API_PASSWORD', |
| 42 | + 'DB_URL', |
| 43 | + ]; |
| 44 | + |
| 45 | + $dotenv->required($requiredEnvVars)->notEmpty(); |
| 46 | +} catch (ValidationException $e) { |
| 47 | + http_response_code(503); |
| 48 | + echo sprintf('Missing one or more required environment variable(s): %s', join(', ', $requiredEnvVars)); |
| 49 | + exit; |
| 50 | +} |
| 51 | + |
29 | 52 | define('DEBUG', '1' === env('DEBUG'));
|
30 | 53 |
|
31 | 54 | try {
|
32 |
| - $connection = DriverManager::getConnection(['url' => env('DB_URL')]); |
| 55 | + $connection = DriverManager::getConnection( |
| 56 | + (new DsnParser(['postgres' => 'pdo_pgsql']))->parse(env('DB_URL')) |
| 57 | + ); |
33 | 58 | } catch (Exception $e) {
|
34 | 59 | http_response_code(503);
|
35 | 60 | echo 'Unable to connect to the database';
|
|
135 | 160 | ]));
|
136 | 161 | $app->add(TwigMiddleware::createFromContainer($app, Twig::class));
|
137 | 162 | $app->add(new Middleware\RemoveDuplicateAuthHeader());
|
138 |
| -$app->add(new Middleware\EnvironmentValidation(getenv())); |
139 | 163 | $app
|
140 | 164 | ->addErrorMiddleware(DEBUG, true, true)
|
141 | 165 | ->setDefaultErrorHandler(function (Request $request, Throwable $exception, bool $displayErrorDetails) use ($app) {
|
|
0 commit comments