permissions = Cache::remember( self::CACHE_KEY, now()->addMinutes(self::CACHE_DURATION_MINUTES), fn (): Collection => WebsiteHousekeepingPermission::all()->pluck('min_rank', 'permission'), ); } public function getOrDefault(string $permissionName, bool $default = false): bool { if (! $this->permissions->has($permissionName)) { return $default; } $requiredRank = (int) $this->permissions->get($permissionName); return auth()->check() && auth()->user()->rank >= $requiredRank; } public static function clearCache(): void { Cache::forget(self::CACHE_KEY); } }