mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-03-13 09:40:18 +01:00
50 lines
1.5 KiB
PHP
50 lines
1.5 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 PDOException;
|
|
|
|
class CheckConfigurationMiddleware
|
|
{
|
|
public function handle(Request $request, Closure $next): Response|RedirectResponse|JsonResponse
|
|
{
|
|
$checks = [
|
|
'database' => fn () => !empty(DB::connection()->getDatabaseName()) && DB::connection()->getPdo(),
|
|
'admin_user' => fn () => !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) {
|
|
if (str_starts_with($request->route()?->getName(), 'setup.')) {
|
|
return $next($request);
|
|
}
|
|
|
|
return $request->wantsJson()
|
|
? \response()->json(['message' => __('Configurazione del database richiesta')], Response::HTTP_SERVICE_UNAVAILABLE)
|
|
: redirect()->route('setup.index');
|
|
}
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|