ldc-groupe/bootstrap/app.php
2026-05-11 16:12:53 +02:00

73 lines
2.8 KiB
PHP

<?php
use App\Helpers\InertiaErrorHelper;
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Http\Request;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Illuminate\Validation\ValidationException;
return Application::configure(basePath: dirname(__DIR__))
->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();