Атрибуты и известные константы
В данной статье представлены атрибуты и известные константы для работы с политиками в системе 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
-