1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-03-13 01:30:11 +01:00
openstamanager/app/Http/Middleware/CheckConfigurationMiddleware.php
2023-05-07 17:06:01 +02:00

54 lines
1.6 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Database\QueryException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;
use InvalidArgumentException;
use PDO;
use PDOException;
class CheckConfigurationMiddleware
{
public function handle(Request $request, Closure $next): Response|RedirectResponse|JsonResponse
{
$checks = [
'database' => static fn (): bool => !empty(DB::connection()->getDatabaseName()) && DB::connection()->getPdo() instanceof PDO,
'admin_user' => static fn (): bool => !empty(User::exists()),
];
foreach ($checks as $check) {
try {
$check = $check();
} catch (QueryException|InvalidArgumentException|PDOException $exception) {
$check = false;
logger()->error(
__('Configurazione del database mancante: ').$exception->getMessage(),
$exception->getTrace()
);
}
if (!$check) {
$route = $request->route();
if ($route && str_starts_with($route->getName(), 'setup.')) {
return $next($request);
}
if ($request->wantsJson()) {
return \response()->json(['message' => __('Configurazione del database richiesta')], Response::HTTP_SERVICE_UNAVAILABLE);
}
return redirect()->route('setup.index');
}
}
return $next($request);
}
}