Разрешения роли Sylius — удаление управления запасами

Я работаю с Sylius и пытаюсь создать роль пользователя, которой разрешено ТОЛЬКО редактировать продукты. Я дал ему следующие разрешения:

  • Показать продукты
  • Пункт списка
  • Редактировать продукт

Никакие другие разрешения не применяются, и категории родительских разрешений не проверяются. Я думаю, что эти ограничительные разрешения дадут этой роли пользователя доступ только к меню «продукты» в администрировании, но, похоже, также добавляется меню «Уровни инвентаря». Эта роль пользователя абсолютно не должна иметь возможность видеть или редактировать уровни запасов, так что же дает?

Это ошибка с разрешениями Sylius? Разве разрешения не были расширены настолько, чтобы обеспечить такой высокий уровень контроля? Или считается, что уровни запасов настолько неотъемлемая часть продуктов, что они всегда включены в разрешения, связанные с продуктом, чтобы администратор мог убедиться, что продукт, который он редактирует, действительно доступен?

Я приму решения по удалению разрешений на инвентаризацию, хотя полагаю, что буду испачкать руки в коде, чтобы сделать это. Я также приму информацию о размышлениях, стоящих за этим, или о том, является ли это ошибкой с Силиусом. Спасибо!


person carbide20    schedule 08.10.2016    source источник


Ответы (1)


Я нашел свой ответ в коде. Файл: src/Sylius/Bundle/WebBundle/Menu/BackendMenuBuilder.php

Это файл, который помещает все эти элементы на боковую панель меню администратора после проверки того, что разрешения позволяют этому пользователю видеть его. Здесь есть кусок кода, который выглядит так:

if ($this->rbacAuthorizationChecker->isGranted('sylius.product.index')) { // THIS IS IT!
        $child->addChild('products', [
            'route' => 'sylius_backend_product_index',
            'labelAttributes' => ['icon' => 'glyphicon glyphicon-th-list'],
        ])->setLabel($this->translate(sprintf('sylius.backend.menu.%s.products', $section)));
        $child->addChild('inventory', [
            'route' => 'sylius_backend_inventory_index',
            'labelAttributes' => ['icon' => 'glyphicon glyphicon-tasks'],
        ])->setLabel($this->translate(sprintf('sylius.backend.menu.%s.stockables', $section)));
    }

Это добавляет элемент меню продуктов, а также одновременно добавляет элемент меню инвентаря на основе того же разрешения: «sylius.product.index». Я предполагаю, что это либо еще не было разделено на собственное разрешение, либо просто считается, что в БОЛЬШИНСТВЕ случаев пользователь, который может управлять продуктами, также должен иметь возможность управлять инвентарем. Я создам для этого новое разрешение, чтобы решить мою проблему.

person carbide20    schedule 09.10.2016