*/ public function share(Request $request): array { [$message, $author] = str(Inspiring::quotes()->random())->explode('-'); /** @var ?User $user */ $user = $request->user(); // servers $servers = []; if ($user && $user->can('viewAny', [Server::class, $user->currentProject])) { $servers = ServerResource::collection($user->currentProject?->servers); } $data = []; if ($request->route('server')) { $data['server'] = ServerResource::make($request->route('server')); // sites $sites = []; /** @var Server $server */ $server = $request->route('server'); if ($user && $user->can('viewAny', [Site::class, $server])) { $sites = SiteResource::collection($server->sites); } $data['serverSites'] = $sites; if ($request->route('site')) { $data['site'] = SiteResource::make($request->route('site')); } } return [ ...parent::share($request), ...$data, 'name' => config('app.name'), 'quote' => ['message' => trim($message), 'author' => trim($author)], 'auth' => [ 'user' => $user, 'projects' => $user?->allProjects()->get(), 'currentProject' => $user?->currentProject, ], 'publicKeyText' => __('servers.create.public_key_text', ['public_key' => get_public_key_content()]), 'projectServers' => $servers, 'configs' => config('core'), 'ziggy' => fn (): array => [ ...(new Ziggy)->toArray(), 'location' => $request->url(), ], 'sidebarOpen' => ! $request->hasCookie('sidebar_state') || $request->cookie('sidebar_state') === 'true', 'flash' => [ 'success' => fn () => $request->session()->get('success'), 'error' => fn () => $request->session()->get('error'), 'warning' => fn () => $request->session()->get('warning'), 'info' => fn () => $request->session()->get('info'), 'data' => fn () => $request->session()->get('data'), ], ]; } }