|null */ public private(set) ?Collection $permissions; public function __construct() { /** @var Collection $permissions */ $permissions = Cache::remember( key: 'website_permissions', ttl: now()->addMinutes(30), callback: fn () => WebsitePermission::pluck('min_rank', 'permission') ); $this->permissions = $permissions; } 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; } /** @var \App\Models\User $user */ $user = auth()->user(); return $user->rank >= (int) $this->permissions->get($permissionName); } public function refresh(): void { Cache::forget('website_permissions'); /** @var Collection $permissions */ $permissions = Cache::remember( key: 'website_permissions', ttl: now()->addMinutes(30), callback: fn () => WebsitePermission::pluck('min_rank', 'permission') ); $this->permissions = $permissions; } }