fn () => [ 'app' => [ 'name' => config('app.name'), ], ], '$flash' => fn () => [ 'success' => $request->session()->get('success'), 'error' => $request->session()->get('error'), 'info' => $request->session()->get('info'), 'warning' => $request->session()->get('warning'), ], '$roles' => $roles = fn () => $request->user()?->roles()->with('permissions:id,name')->get(['id', 'name']) ?: [], '$permissions' => function () use ($roles, $request) { $user = $request->user(); if (!$user) { return []; } $permissions = $user->permissions()->get(['id', 'name']); return $roles()?->reduce(function (Collection $prev, Role $role) { $role->permissions->each(fn (Permission $permission) => $prev->push($permission)); return $prev; }, $permissions); }, '$menus' => fn () => $request->user()?->menus(), '$token' => fn () => session('token'), ]); } }