Понимание пользовательских прав доступа в OpenCart

29 Мая 2022г. в 04:33

Я предполагаю, что вы используете последнюю версию OpenCart. Мы начнем с базового введения в ресурсы и разрешения.

Понимание ресурсов и разрешений
В любой системе контроля доступа (ACL) существуют два важных объекта — разрешения и ресурсы. Ресурсы подвергаются определенным разрешениям для группы пользователей, чтобы те могли выполнять различные действия над ресурсами. Конечно, каждая система имеет свой собственный способ организации ресурсов и разрешений.

В этом разделе мы рассмотрим это в контексте OpenCart.

Ресурсы
Вы будете удивлены, узнав, что все файлы контроллера со стороны администратора рассматриваются как ресурсы. Таким образом, ресурс “catalog/attribute” отображается в файле, расположенном по адресу admin/controller/catalog/attribute.php. Следовательно, всякий раз, когда вы назначаете конкретный ресурс какой-либо группе пользователей, они смогут выполнять все действия, определенные в соответствующем файле контроллера.

Перейдите к части back-end и выберите System > Users > User Groups. Отредактируйте одну из групп пользователей — например, отредактируем группу Administrator.

Теперь, как вы можете видеть, все ресурсы перечислены в раскрывающемся списке. Естественно, если вы создадите новый файл контроллера для своего настраиваемого модуля, он также будет виден.

Итак, это базовое представление о ресурсах. Далее мы увидим, как ресурсы связаны с разрешениями.

Права доступа
В OpenCart разрешения делятся на две основные категории — доступ и изменение. Пользователи с правами доступа смогут просматривать ресурсы только в том случае, если разрешение на изменение позволяет пользователям добавлять / редактировать информацию о ресурсах.



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

Создание новой группы пользователей и назначение разрешений
Поскольку теперь вы знакомы с разрешениями и ресурсами, мы продолжим работу и создадим новую группу пользователей, чтобы продемонстрировать, как все это работает. Перейдите к части back-end и выберите System > Users > User Groups. В нем будут перечислены группы пользователей по умолчанию, доступные в OpenCart.



Нажмите на +, чтобы добавить новую группу пользователей.



Введите имя группы пользователей, выберите ресурсы для каждого доступа к разрешению,настройте и всё готово. Сохраните группу, как только закончите! Для демонстрационных целей я выбрал для своей Custom Group ресурс catalog/category.

Тестирование группы Custom Group
Давайте быстро создадим нового пользователя из back-end и назначим новую созданную группу пользователей этому пользователю. Перейдите в System > Users > Users и щелкните +, чтобы создать нового пользователя.



Заполните необходимые данные – необходимо заполнить колонку User Group, в которой я выбрал Custom Group . Сохраните пользователя, выйдите из системы и войдите заново с этим новым пользователем. Теперь попробуйте получить доступ к любому разделу, который не разрешен для Custom Group. Вы получите отказ в разрешении!



Как проверить, разрешен ли пользователю доступ / изменение ресурсов
В этом разделе мы увидим, как вы можете проверить, разрешен ли пользователю доступ или изменение определенного ресурса. В большинстве файлов контроллера в back-end будет следующий фрагмент: так как очевидно, что нам нужно будет аутентифицировать пользователей, прежде чем разрешать им выполнять любые привилегированные действия.

Откройте upload/admin/controller/catalog/product.php файл.

if (!$this->user->hasPermission('modify', 'catalog/product')) {
$this->error['warning'] = $this->language->get('error_permission');
}
1
2
3
if (!$this->user->hasPermission('modify', 'catalog/product')) {
$this->error['warning'] = $this->language->get('error_permission');
}
Есть несколько мест, где вы найдете приведенный выше фрагмент. В основном, он проверяет, разрешено ли зарегистрированному пользователю изменять разрешение на ресурс “catalog/product”.

Также он проверяет группу пользователей зарегистрированного пользователя даже если эта конкретная группа модифицирует разрешение на указанный ресурс.

Таким образом, вы можете проверить, разрешено ли пользователю выполнять какие-либо конкретные действия на определенных ресурсах. Идеальный сценарий состоял бы в том, чтобы настроить разные группы пользователей и назначить различный набор разрешений для каждой группы в соответствии с вашими требованиями.

Заключение
Сегодня мы обсудили ресурсы и разрешения в OpenCart. Мы начали с базового введения и увидели, как можно воспользоваться группами пользователей в сочетании с ресурсами и разрешениями.

Мы завершили статью с помощью фрагмента кода, демонстрирующего, как проверить, разрешен ли пользователю доступ / изменение определенного ресурса.

Как всегда, если вы ищете дополнительные инструменты, утилиты, расширения и т.д. для OpenCart, которые вы можете использовать в своих проектах или для собственного образования, не забудьте посмотреть, что имеется в нашем маркете.