![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/ts.corals.io/corals-api/Corals/core/Menu/Models/ |
<?php namespace Corals\Menu\Models; use Corals\Foundation\Models\BaseModel; use Corals\Foundation\Traits\Cache\Cachable; use Corals\Foundation\Traits\ModelPropertiesTrait; use Corals\Foundation\Transformers\PresentableTrait; use Corals\Foundation\Traits\Node\SimpleNode; class Menu extends BaseModel { use PresentableTrait, SimpleNode, Cachable, ModelPropertiesTrait; protected $orderField = 'order'; protected $guarded = ['id', 'root']; protected $casts = [ 'roles' => 'array', 'properties' => 'json' ]; public $config = 'menu.models.menu'; /** * @param $query * @return mixed */ public function scopeActive($query) { return $query->whereStatus('active'); } public function setIconAttribute($value) { if ($value) { $this->attributes['icon'] = 'fa ' . $value; } else { $this->attributes['icon'] = null; } } public function getUserCanAccessAttribute($value) { if (user()) { $userRoles = user()->roles->pluck('id'); } else { return true; } $roles = collect($this->roles); if ($roles->isEmpty()) { return true; } $intersection = $roles->intersect($userRoles); return $intersection->count(); } public function getUrlAttribute() { return $this->attributes['url'] ?? '#'; } }