Атрибуты и известные константы
В данной статье представлены атрибуты и известные константы для работы с политиками в системе Webim.
Эта статья является частью статей из серии о системе контроля и управления доступом. Базовые понятия этой системы обозначены в этой статье, спецификация языка выражений этой системы расположена в этой статье
Контекст проверки доступа
В контексте проверки доступа в логических выражениях доступны четыре группы атрибутов:
-
subj- Субъект доступа -
action- Действие -
obj- Объект доступа -
env- Окружение, в котором проверяется доступ
Субъект и объект доступа
Субъект – тот, кто осуществляет доступ, объект – ресурс, к которому осуществляется доступ. В зависимости от типа субъекта или объекта зависит набор дополнительных атрибутов. По умолчанию для субъекта и объекта доступен атрибут "тип": subj.type / obj.type.
В качестве субъекта в настоящий момент может выступать только сотрудник.
Далее описаны возможные атрибуты для разных типов (в списке присутствуют не все возможные атрибуты).
Функция системы
В контексте контроля доступа конкретная функциональность представляет некую функцию или группу функций. В отличие от проверки доступа на действие конкретному ресурсу, которая разрешает/запрещает некое действие над ресурсом, проверка доступа к функциональности разрешает/запрещает доступ к ней в целом.
Функции делятся на следующие категории:
-
UI - функциональность, представляемая фронтендом
-
API - функциональность, предоставляемая бэкендом
Проверка доступа к фиче выполняется со следующими атрибутами:
-
obj.type–"feature" -
obj.name– имя-ключ функциональности -
obj.tariff_option– тарифная опция, от которой функциональность зависит. Предполагается для использования в политиках с системными ограничениям
Ниже описан список функциональностей и соответствующие им ключи.
Функциональности пользовательского интерфейса:
| Название | Ключ (obj.name) | Примечание |
|---|---|---|
| Автоматические приглашения (Генератор лидов) | ui.automatic_invitations |
Доступ к странице Генератор лидов |
| Активность сотрудников | ui.agent_online_periods |
Доступ к странице Активность сотрудников |
| Боты | ui.robots |
Доступ к странице Боты |
| График работы | ui.work_hours |
Доступ ко вкладке График работы на странице редактирования профиля сотрудника |
| Панель приборов | ui.dashboard |
Доступ к странице Панели приборов |
| История действий | ui.action_log |
Доступ к странице История действий |
| История диалогов | ui.history |
Доступ к странице История диалогов |
| Кнопки размещения | ui.locations |
Доступ к странице Кнопки и размещения |
| Отчёты (Статистика) | ui.report_configs_editor |
Доступ к Редактору отчётов |
| Профиль | ui.profile |
Доступ к редактированию своего профиля |
| Рассылки | ui.broadcasts_management |
Доступ к странице Рассылки |
| Редактирование настроек аккаунта | ui.account_config |
Доступ к редактору ресурсов (account config) |
| Список блокировок | ui.banlist |
Доступ к чёрному списку посетителей на странице Блокировки |
| Статистика | ui.statistics |
Доступ к странице Статистика |
| Управление отделами | ui.departments |
Доступ к странице Отделы |
| Управление политиками | ui.policy_management |
Доступ к странице Редактор политик |
| Управление сотрудниками | ui.agents |
Доступ к странице Сотрудники |
| Финансы | ui.payments |
Доступ к странице Финансы |
| Чат (с посетителями) | ui.chat |
Доступ к РМО |
| Шаблоны WhatsApp | ui.whatsapp_templates |
Доступ к рассылкам в WhatsApp |
Функциональности бэкенда:
| Название | Ключ (obj.name) |
|---|---|
| CRUD Операторов | api.agents |
| API рассылок | api.broadcasts |
| CRUD каналов | api.channels |
| CRUD Отделов | api.departments |
| Диалоги (история) | api.chats |
| CRUD для iOS сертификатов | api.ios_push_certificates |
| Оплаты | api.payments |
| Приватные ключи | api.private_keys |
| CRUD ботов | api.robots |
| Управление словарём проверки орфографии | api.spelling_dictionary |
| CRUD-ы Управления политиками | api.policy_management |
Сотрудник
Этот же набор атрибутов доступен и для Субъекта (subj)
-
obj.type = 'agent' -
obj.roles- множество ролей Сотрудника. Например['supervisor', 'report']. Пример проверки роли:'supervisor' in obj.roles -
obj.departments.all- множество всех Отделов сотрудника -
obj.departments.subordinate- множество подревизионных отделов сотрудника
Отдел
obj.type = 'department'
Связь сотрудника с отделом
-
obj.type = 'agent_department' -
obj.agent- сотрудник -
obj.department- отдел
Правило (дерево политик)
obj.type = 'rule'
Политика (дерево политик)
obj.type = 'policy'
Группа политик (дерево политик)
obj.type = 'policy_set'
Действие (action)
Для действия доступен только один атрибут:
action.type- тип действия, для которого запрашивается доступ
Возможные значения для коллекций (obj.type = 'agent', obj.type = 'department' и т. п.):
-
'create'- создать -
'read'- прочитать -
'update'- обновить -
'delete'- удалить
Возможные значения для функций системы (obj.type = 'feature'):
'access'- обращение (к функции)
Окружение (env)
-
env.tariff- Группа атрибутов с информацией о тарифеenv.tariff.enabled_options- Множество включенных опций тарифного плана
-
env.config- Группа атрибутов со значениями опций из account config (если не указано иное)-
env.config.restricted_options- Множество запрещенных тарифных опций (согласно соответствующей опции конфига аккаунта и роли субъекта) -
env.config.operator_department_prioritization -
env.config.operator_status_timer
-