2025-08-01 15:20:49 +02:00
|
|
|
<?php
|
|
|
|
|
|
2025-09-29 16:48:44 +02:00
|
|
|
use App\Helpers\InertiaErrorHelper;
|
2025-08-01 15:20:49 +02:00
|
|
|
use Illuminate\Foundation\Application;
|
|
|
|
|
use Illuminate\Foundation\Configuration\Exceptions;
|
|
|
|
|
use Illuminate\Foundation\Configuration\Middleware;
|
2025-09-29 16:48:44 +02:00
|
|
|
use Illuminate\Http\Request;
|
|
|
|
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
2025-11-13 16:06:16 +01:00
|
|
|
use Illuminate\Validation\ValidationException;
|
2025-08-01 15:20:49 +02:00
|
|
|
|
|
|
|
|
return Application::configure(basePath: dirname(__DIR__))
|
|
|
|
|
->withRouting(
|
2025-08-06 10:53:17 +02:00
|
|
|
web: [
|
|
|
|
|
__DIR__ . '/../routes/web-front.php',
|
|
|
|
|
__DIR__ . '/../routes/web-back.php',
|
|
|
|
|
],
|
2026-05-07 14:33:43 +02:00
|
|
|
api: __DIR__.'/../routes/api.php',
|
2025-08-01 15:20:49 +02:00
|
|
|
health: '/up',
|
|
|
|
|
)
|
2025-08-06 10:53:17 +02:00
|
|
|
->withMiddleware(function (Middleware $middleware) {
|
|
|
|
|
$middleware->web(append: [
|
2026-02-10 15:57:07 +01:00
|
|
|
\App\Http\Middleware\ForceLocale::class,
|
2025-08-06 10:53:17 +02:00
|
|
|
\App\Http\Middleware\HandleInertiaRequests::class,
|
|
|
|
|
\Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class,
|
|
|
|
|
\Uwil\LaravelBackend\Middlewares\LogoutUnpublishedUsers::class,
|
2025-09-29 11:50:33 +02:00
|
|
|
\Uwil\LaravelCommon\Middlewares\SecureHeaders::class,
|
2025-08-06 10:53:17 +02:00
|
|
|
]);
|
|
|
|
|
$middleware->group('saml', [
|
|
|
|
|
\Uwil\LaravelBackend\Middlewares\EncryptCookies::class,
|
|
|
|
|
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
|
|
|
|
|
\Illuminate\Session\Middleware\StartSession::class,
|
|
|
|
|
]);
|
|
|
|
|
$middleware->alias([
|
2026-01-09 10:55:52 +01:00
|
|
|
'auth' => \Uwil\LaravelBackend\Middlewares\Authenticate::class,
|
|
|
|
|
'guest' => \Uwil\LaravelBackend\Middlewares\RedirectIfAuthenticated::class,
|
2026-02-10 17:35:33 +01:00
|
|
|
'lang' => \App\Http\Middleware\Lang::class
|
2025-08-06 10:53:17 +02:00
|
|
|
]);
|
2025-08-01 15:20:49 +02:00
|
|
|
})
|
2025-08-06 10:53:17 +02:00
|
|
|
->withExceptions(function (Exceptions $exceptions) {
|
2025-09-29 16:48:44 +02:00
|
|
|
$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);
|
|
|
|
|
}
|
|
|
|
|
});
|
2025-11-13 16:06:16 +01:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 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());
|
|
|
|
|
});
|
2025-08-01 15:20:49 +02:00
|
|
|
})->create();
|