withRouting( api: __DIR__.'/../routes/api.php', web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withBroadcasting( channels: __DIR__.'/../routes/channels.php', attributes: ['middleware' => ['auth:api']] ) ->withMiddleware(function (Middleware $middleware) { $middleware->validateCsrfTokens(except: [ 'sanctum/csrf-cookie', 'user/*' ]); $middleware->alias([ 'role' => \Spatie\Permission\Middleware\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class, 'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { $exceptions->render(function (NotFoundHttpException $e, Request $request) { if ($request->is('api/*')) { return ApiResponse::NOT_FOUND->response(); } }); $exceptions->render(function (UnauthorizedException $e, Request $request) { if ($request->is('api/*')) { return ApiResponse::UNAUTHORIZED->response(); } }); $exceptions->render(function (ValidationException $e, Request $request) { if ($request->is('api/*')) { return ApiResponse::UNPROCESSABLE_CONTENT->response($e->errors()); } }); })->create();