Phalcon\Acl\Adapter\Mongo::insertOrUpdateAccess PHP Method

insertOrUpdateAccess() protected method

Inserts/Updates a permission in the access list
protected insertOrUpdateAccess ( string $roleName, string $resourceName, string $accessName, integer $action ) : boolean
$roleName string
$resourceName string
$accessName string
$action integer
return boolean
    protected function insertOrUpdateAccess($roleName, $resourceName, $accessName, $action)
    {
        /**
         * Check if the access is valid in the resource
         */
        $exists = $this->getCollection('resourcesAccesses')->count(['resources_name' => $resourceName, 'access_name' => $accessName]);
        if (!$exists) {
            throw new Exception("Access '" . $accessName . "' does not exist in resource '" . $resourceName . "' in ACL");
        }
        $accessList = $this->getCollection('accessList');
        $access = $accessList->findOne(['roles_name' => $roleName, 'resources_name' => $resourceName, 'access_name' => $accessName]);
        if (!$access) {
            $accessList->insert(['roles_name' => $roleName, 'resources_name' => $resourceName, 'access_name' => $accessName, 'allowed' => $action]);
        } else {
            $access['allowed'] = $action;
            $accessList->save($access);
        }
        /**
         * Update the access '*' in access_list
         */
        $exists = $accessList->count(['roles_name' => $roleName, 'resources_name' => $resourceName, 'access_name' => '*']);
        if (!$exists) {
            $accessList->insert(['roles_name' => $roleName, 'resources_name' => $resourceName, 'access_name' => '*', 'allowed' => $this->_defaultAccess]);
        }
        return true;
    }