permissions = Cache::remember( key: 'website_permissions', ttl: now()->addMinutes(30), callback: fn () => WebsitePermission::all()->pluck('min_rank', 'permission') ); } public function getOrDefault(string $permissionName, bool $default = false): bool { if (! $this->permissions instanceof Collection || ! $this->permissions->has($permissionName)) { return $default; } if (! auth()->check()) { return false; } return auth()->user()->rank >= (int) $this->permissions->get($permissionName); } public function refresh(): void { Cache::forget('website_permissions'); $this->permissions = Cache::remember( key: 'website_permissions', ttl: now()->addMinutes(30), callback: fn () => WebsitePermission::all()->pluck('min_rank', 'permission') ); } }