withRouting( web: __DIR__.'/../routes/web.php', api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware): void { // Alias custom middleware so they can be referenced by short name. $middleware->alias([ 'active' => EnsureUserIsActive::class, 'admin' => EnsureUserIsAdmin::class, 'terms' => EnsureTermsAccepted::class, ]); // Apply "active" (account status) and "locale" (language) to web. $middleware->web(append: [ EnsureUserIsActive::class, SetLocale::class, ]); // The cookie-consent flag is written by client-side JS (plain value), // so it must not be encrypted/decrypted by the framework. $middleware->encryptCookies(except: [ 'city10-consent', 'city10-locale', ]); // Apply "locale" to API requests too (after auth so user is known). $middleware->api(append: [ SetLocale::class, ]); }) ->withExceptions(function (Exceptions $exceptions): void { $exceptions->shouldRenderJsonWhen( fn (Request $request) => $request->is('api/*') || $request->expectsJson(), ); })->create();