コード例 #1
0
 /**
  * Lấy tất cả permisions của các role của user
  * - Đối với từng role, permissions bao gồm của nó và của tất cả role ưcùng role_groupơ nhưng [level < hơn nó]
  *
  * @return \Illuminate\Database\Eloquent\Builder
  */
 public function permissions()
 {
     // Role IDs tất cả roles attach trực tiếp với User + 'Roles cấp dưới của các roles đó'
     $role_ids = [];
     foreach ($this->getRoles() as $role) {
         /** @var \Minhbang\AccessControl\Models\Role $role */
         $role_ids = array_merge($role_ids, $role->getInferiorIds(true));
     }
     $role_ids = $role_ids ?: [-1];
     return Permission::select('permissions.*')->join('permission_role', 'permission_role.permission_id', '=', 'permissions.id')->join('roles', 'roles.id', '=', 'permission_role.role_id')->whereIn('roles.id', $role_ids)->groupBy('permissions.id');
 }