withRouting( web: [ __DIR__ . '/../routes/web-front.php', __DIR__ . '/../routes/web-back.php', ], api: __DIR__.'/../routes/api.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { $middleware->web(append: [ \App\Http\Middleware\ForceLocale::class, \App\Http\Middleware\HandleInertiaRequests::class, \Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class, \Uwil\LaravelBackend\Middlewares\LogoutUnpublishedUsers::class, \Uwil\LaravelCommon\Middlewares\SecureHeaders::class, ]); $middleware->group('saml', [ \Uwil\LaravelBackend\Middlewares\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, ]); $middleware->alias([ 'auth' => \Uwil\LaravelBackend\Middlewares\Authenticate::class, 'guest' => \Uwil\LaravelBackend\Middlewares\RedirectIfAuthenticated::class, 'lang' => \App\Http\Middleware\Lang::class ]); }) ->withExceptions(function (Exceptions $exceptions) { $exceptions->render(function (HttpException $e, Request $request) { $status = $e->getStatusCode(); if ($request->route() && \in_array('auth:backend', $request->route()->middleware())) { return InertiaErrorHelper::render($request, $status); } else { return response()->view('front.pages.error', [ 'status' => $status, ], $status); } }); /** * Capture automatique des exceptions avec Sentry */ $exceptions->report(function (Throwable $e) { if (app()->bound('sentry')) { app('sentry')->captureException($e); } }); /** * — Gestion des erreurs de validation * en excluant les champs sensibles du flash */ $exceptions->render(function (ValidationException $e, Request $request) { $safeInput = collect($request->all()) ->except(['password', 'password_confirmation', 'current_password']) ->toArray(); return back() ->withInput($safeInput) ->withErrors($e->errors()); }); })->create();