Перейти к содержанию

Атрибуты и известные константы

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