withRouting( web: __DIR__ . '/../routes/web.php', api: __DIR__ . '/../routes/api.php', commands: __DIR__ . '/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // $middleware->statefulApi(); $middleware->append([SetUserLanguage::class, PerformanceMonitor::class]); $middleware->alias([ 'permission' => CheckPermission::class, 'ability' => CheckForAnyAbility::class, ]); }) ->withSchedule(function (Schedule $schedule) { $schedule->call(new DeleteExpiredTokens)->everyMinute(); }) ->withExceptions(function (Exceptions $exceptions) { // Anexo maior que o post_max_size do PHP: responde em JSON no lugar do // erro cru, para o front conseguir mostrar a mensagem ao usuário. $exceptions->render(function (PostTooLargeException $e, Request $request) { if (!$request->expectsJson()) { return null; } return response()->json([ 'message' => __('http.payload_too_large', [ 'max' => round(config('uploads.max_size_kb') / 1024, 1), ]), ], 413); }); }) ->create();