Права доступа к услугам

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

Каждая запись прав доступа определяет связь сотрудника с определенной услугой, и, при необходимости, списком её опций.

Просмотр списка прав доступа

Для просмотра прав доступа к услугам необходимо использовать API GET /api/prototype/permissions. Аналогично всем API списков, оно использует ключи offset и limit для навигации по записям, а так же заголовок Count для получения общего количества записей прав, соответствующих фильтрам.

Фильтрация записей выполняется через GET-параметры запроса.

Фильтры прав доступа

Ключ

Тип

Описание

franchisees

List[ObjectId]

(Только франчайзер) Франчайзи, который определил права доступа

franchisees_ne

List[ObjectId]

(Только франчайзер) Аналогично предыдущему, исключающе

users

List[ObjectId]

Сотрудники, на которых распространяются права

users_ne

List[ObjectId]

Аналогично предыдущему, исключающе

prototypes

List[ObjectId]

Услуги, на которые распространяются права

prototypes_ne

List[ObjectId]

Аналогично предыдущему, исключающе

Пример запроса

curl http://demo.idealist.one/api/prototype/permissions \
     --header "Authorization: Bearer persistent d6f0cb68-a176-464a-82dc-a2958b99c1fb"

Поля записи

Поле

Тип

Описание

id

ObjectId

Уникальный идентификатор записи

prototype

ObjectId

Идентификатор услуги

user

ObjectId

Идентификатор сотрудника

options

Optional[List[UUID]]

Опции услуги

by_attributes

Optional[bool]

Флаг фильтрации по атрибутам

Ключи документов так же включают в себя Разделяемые поля.

Ключи options и by_attributes взаимоисключаемы. by_attributes передается только в случае, если его значение true и означает, что сотруднику доступны те опции услуги, значения всех атрибутов которого совпадают с собственными атрибутами сотрудника.

Если передан пустой список options, то сотруднику доступны все опции услуги.

Альтернативный способ - развернутый список прав для сотрудника

Если необходимо получить права для определенного сотрудника, можно использовать API GET /api/user/<objectid:user>/prototype/accessible. Формат данных отличается от API GET /api/prototype/permissions и представляет из себя структуру формата Dict[ObjectId, List[UUID]], где ключ - идентификатор услуги, а значение - список доступных опций.

Управление правами доступа

Пользователи с уровнем доступа администратора могут управлять правами доступа сотрудников к услугам в пределах своей сети. Для этого используется API [POST|DELETE] /api/prototype/permissions.

Добавление прав доступа

Чтобы дать сотруднику доступ к услуге или её отдельным опциям, необходимо выполнить POST /api/prototype/permissions с описанием условий назначения прав.

Обязательные поля запроса

Ключ

Тип

Описание

user

ObjectId

Идентификатор пользователя

prototype

ObjectId

Идентификатор услуги

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

Опциональные поля запроса

Ключ

Тип

Описание

options

List[UUID]

Список опций услуги, доступных сотруднику

by_attributes

bool

Флаг фильтрации опций по атрибутам сотрудника

Если ключ by_attributes передан и имеет значение true, ключ options игнорируется. При использовании режима совпадения по атрибутам, доступные сотруднику опции услуги будут определятся в момент выполнения запроса на список доступных услуг, а так же проверятся при выполнении продажи.

При передаче списка опций в ключе options, доступны будут только те опции, идентификатор которых указан явно в этом списке.

Пример запроса

# Разрешение выполнения всех опций услуги

curl http://demo.idealist.one/api/prototype/permissions
     --header "Authorization: Bearer persistent d6f0cb68-a176-464a-82dc-a2958b99c1fb"
     -X POST
     -d '{"user": "5a67454d73d63d3be5370dfa", "prototype": "5a67454e73d63d3be5370dfb"}'

# Разрешение выполнения опций услуги из списка

curl http://demo.idealist.one/api/prototype/permissions
     --header "Authorization: Bearer persistent d6f0cb68-a176-464a-82dc-a2958b99c1fb"
     -X POST
     -d '{"user": "5a67454d73d63d3be5370dfa", "prototype": "5a67454e73d63d3be5370dfb", "options": ["1479e6da-6f5a-4cf7-b90a-e7bd9482114b"]}'

# Разрешение выполнения опций услуги по совпадению атрибутов

curl http://demo.idealist.one/api/prototype/permissions
     --header "Authorization: Bearer persistent d6f0cb68-a176-464a-82dc-a2958b99c1fb"
     -X POST
     -d '{"user": "5a67454d73d63d3be5370dfa", "prototype": "5a67454e73d63d3be5370dfb", "by_attributes": true}'

Отзыв прав доступа

Для запрета доступа пользователя к опциям услуги используется API DELETE /api/prototype/permissions.

Обязательные поля запроса

Ключ

Тип

Описание

user

ObjectId

Идентификатор пользователя

prototype

ObjectId

Идентификатор услуги