name); } /** * @param string $name */ public function setName($name): void { $this->name = $name; } /** * @return string */ public function getSlug() { return $this->slug; } /** * @param string $slug */ public function setSlug($slug): void { $this->slug = $slug; } /** * @return array */ public function getPermissions(): array { return $this->permissions; } /** * @param array $permissions */ public function setPermissions(array $permissions): void { $this->permissions = $permissions; } /** * Get bootstrap badge arguments * * @return array|null */ public function getBadge() { if(!empty($this->badge['label']) && !empty($this->badge['type'])) { return Arr::add($this->badge, 'isPill', false); } else { return null; } } /** * Set bootstrap badge arguments * * @param array $badge */ public function setBadge(array $badge): void { $this->badge = $badge; } /** * @return string|array */ public function getIconClass(): string { if(is_array($this->iconClasses)) { return implode(' ', $this->iconClasses); } else { return $this->iconClasses; } } /** * @param array|string $iconClasses */ public function setIconClasses($iconClasses): void { $this->iconClasses = $iconClasses; } /** * @return bool */ public function hasIcon() { return !empty($this->getIconClass()); } /** * @return bool */ public function hasBadge() { return !empty($this->badge); } /** * @return bool * @throws \Exception */ public function userHasPermission() { $hasAnyPermission = false; foreach ($this->permissions as $permission) { $hasAnyPermission = $hasAnyPermission || Gate::allows('permission:' . Str::kebab($permission)); } return Auth::check() && ((!empty($this->permissions) && $hasAnyPermission) || empty($this->permissions)); } /** * Valid if both name and slug are not empty * * @return bool */ public function isValid() { return $this->getName() && $this->getSlug(); } }