withRouting( web: __DIR__ . '/../routes/web.php', api: __DIR__ . '/../routes/api.php', commands: __DIR__ . '/../routes/console.php', health: '/up', ) ->withCommands([ GesconImportBanche::class, GesconImportFattureAdeCsv::class, GesconImportFornitoriLegacyMdb::class, GesconResyncStabili::class, GesconCollegaFornitoreStabili::class, SyncSoggettiToPersone::class, StabiliTransferCommand::class, DedupeRateEmesseCommand::class, GesconQaContatori::class, GesconQaEmissione::class, FeCassettoImportLocal::class, IstatSyncIndiciCommand::class, IstatSetIndiceCommand::class, ImportGesconAcquaLegacyCommand::class, GesconImportAlignCommand::class, ImportGesconF24LegacyCommand::class, NetgesconQaUnitaNominativiCommand::class, NetgesconDistributionPullCommand::class, NetgesconPreupdateBackupCommand::class, NetgesconRestoreRecordCommand::class, PanasonicCstaBridgeCommand::class, GoogleSyncRubricaContactsCommand::class, GooglePushRubricaContactsCommand::class, GoogleImportKeepNotesCommand::class, GoogleSyncTicketCalendarCommand::class, GoogleSyncFornitoriRubricaCommand::class, CtiSyncPostItFromStagingCommand::class, ]) ->withMiddleware(function (Middleware $middleware) { $middleware->append(\App\Http\Middleware\ForceFilamentUiMiddleware::class); // Registra gli alias dei middleware di Spatie Permission (NAMESPACE CORRETTO) $middleware->alias([ 'role' => \Spatie\Permission\Middleware\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class, 'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class, 'verified' => \App\Http\Middleware\EnsureEmailIsVerifiedForNetgescon::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { $exceptions->report(function (\Throwable $e): void { if ($e instanceof \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface && $e->getStatusCode() < 500) { return; } $record = [ 'timestamp' => now()->toIso8601String(), 'type' => 'runtime', 'message' => $e->getMessage(), 'context' => sprintf('%s:%d', $e->getFile(), $e->getLine()), ]; $json = json_encode($record, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); if (! is_string($json) || $json === '') { return; } @file_put_contents(storage_path('logs/runtime-errors.ndjson'), $json . PHP_EOL, FILE_APPEND); }); })->create();