Обход ACL для запуска обновления с использованием itemsService - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь запустить конечную точку publi c, которая обновляет элемент коллекции. Я использую itemsService-> update (), но получаю ошибку ForbiddenCollectionUpdateException .

{
    "error": {
        "code": 302,
        "message": "Updating item from \"products\" collection was denied",
        "class": "Directus\\Permissions\\Exception\\ForbiddenCollectionUpdateException",
        "file": "/var/www/app/src/core/Directus/Permissions/Acl.php",
        "line": 1044
    }
}

Я попытался установить пользователя с правами администратора, используя этот фрагмент:

    $this->_acl->setPublic(false);
    $this->_acl->setUserId(1);

    $this->_acl->setCollectionPermission('products', $this->_acl::PERMISSION_FULL);

Когда я сбрасываю значение $ this -> _ acl , я вижу, что globalPermissions для продукта добавляется, НО, когда я пробовал конечную точку, исключение все еще сохраняется.

Любая идея о том, как я мог сделать это sh? 1015 *

TIA

1 Ответ

0 голосов
/ 27 марта 2020

Запускаете ли вы это в конечной точке?

Попробуйте использовать следующий синтаксис (кажется, что установка ACL на ноль для меня обходит аутентификацию ACL, но все еще использует access_token для действий и ревизий Directus):

$container = \Directus\Application\Application::getInstance()->getContainer();
$dbConnection = $container->get('database');
$acl = $container->get('acl');

$tableGateway = Directus\Database\TableGatewayFactory::create('COLLECTION_NAME', [
    'connection' => $dbConnection,
    'acl' => null (false)
]);

Документация: https://docs.directus.io/advanced/api/data.html#fetching -данные внутри крючков и конечные точки

...