BookStack\Services\PermissionService::checkOwnableUserAccess PHP Метод

checkOwnableUserAccess() публичный Метод

Checks if an entity has a restriction set upon it.
public checkOwnableUserAccess ( Ownable $ownable, $permission ) : boolean
$ownable BookStack\Ownable
$permission
Результат boolean
    public function checkOwnableUserAccess(Ownable $ownable, $permission)
    {
        if ($this->isAdmin()) {
            $this->clean();
            return true;
        }
        $explodedPermission = explode('-', $permission);
        $baseQuery = $ownable->where('id', '=', $ownable->id);
        $action = end($explodedPermission);
        $this->currentAction = $action;
        $nonJointPermissions = ['restrictions'];
        // Handle non entity specific jointPermissions
        if (in_array($explodedPermission[0], $nonJointPermissions)) {
            $allPermission = $this->currentUser() && $this->currentUser()->can($permission . '-all');
            $ownPermission = $this->currentUser() && $this->currentUser()->can($permission . '-own');
            $this->currentAction = 'view';
            $isOwner = $this->currentUser() && $this->currentUser()->id === $ownable->created_by;
            return $allPermission || $isOwner && $ownPermission;
        }
        // Handle abnormal create jointPermissions
        if ($action === 'create') {
            $this->currentAction = $permission;
        }
        $q = $this->entityRestrictionQuery($baseQuery)->count() > 0;
        $this->clean();
        return $q;
    }