Как Sylius Admin Controllers ограничивается правами администратора - PullRequest
0 голосов
/ 08 января 2019

При работе в традиционных (или, точнее, некоторых традиционных) PHP MVC-системах, если в приложении есть область "admin", которая требует от пользователей входа в приложение, программист будет использовать класс контроллера, который наследуется от некоторого базового администратора или использует некоторую черту администратора. Код маршрутизации в этих системах знает, как использовать определенные методы на контроллере / признаке администратора, чтобы проверить, авторизован ли пользователь.

Контроллеры Sylius, однако, являются автономными классами без родительских классов .

<?php
//...
final class DashboardController
{
    //...
}

и, по-видимому, не содержит никакого кода, который выполняет проверку "пользователь вошел в систему".

Как программист sylius создает маршрут к контроллеру, который требует входа пользователя в систему?

Какая система под капотом заставляет пользователя sylius входить в систему или нет?

1 Ответ

0 голосов
/ 08 января 2019

Sylius использует Symfony в качестве PHP Framework и полагается на компонент Security для ограничения доступа к определенным областям приложения, которые не предназначены для публичного использования (например, панель администратора).

Такую конфигурацию можно увидеть здесь: https://github.com/Sylius/Sylius/blob/master/config/packages/security.yaml (см. Строки № 16 и № 101).

Ресурсы (в основном, каждая сущность в Sylius - продукт, пользователи, атрибуты, таксоны) имеют более продвинутые разрешения, которые можно использовать с помощью плагинов, таких как https://github.com/Sylius/RbacPlugin или https://bitbag.shop/products/sylius-access-control-layer.

Пример: https://github.com/Sylius/Sylius/blob/master/src/Sylius/Bundle/AdminBundle/Resources/config/routing/admin_user.yml#L10

Подробнее о работе компонента Symfony Security вы можете прочитать здесь: https://symfony.com/doc/current/components/security.html

...