settings->set(Setting::GettingStartedPending, true); } public function pending(): bool { return $this->settings->get(Setting::GettingStartedPending) === true; } /** * Whether this user should be taken to the page right now. */ public function isWaitingFor(User $user): bool { return $this->pending() && $this->mayRead($user) && $this->staff->mainAdministrator()?->is($user) === true; } /** * Whether this user may open the page at all. * * Any staff member, and no capability gate: the page is a list of * links to screens they can already reach, each one filtered to what * that person may actually do (see QuickStart). Both editions get it — * a managed installation still has a first client to add and a first * file to upload, which is the whole content. */ public function mayRead(User $user): bool { return $user->isStaff(); } /** * Stop redirecting. The page itself keeps working — somebody who * closed it on their way past should be able to find it again. */ public function dismiss(): void { $this->settings->set(Setting::GettingStartedPending, false); } }