Роли и полномочия
Назначение
Сервис обеспечивает управление ролями, ограничениями доступа и полномочиями пользователей в Dinext. Включает роли (Role), User Permission (ограничение по полям связей), базовые проверки доступа в запросах (db_query), а также расширения: Dinext (ограничения на уровне тип документа), проверка прав от имени другого пользователя .
Цели и задачи
- Назначать пользователям роли и ограничивать доступ к документам по правилам.
- Ограничивать видимость данных через User Permission (например, только свои клиенты, свои проекты).
- Управлять правами на уровне тип документа (чтение, создание, изменение, удаление, отправка) по ролям.
- При необходимости проверять права от имени другого пользователя (для замещений и аудита).
- Использовать дополнительные модели ограничений при установке соответствующих приложений.
Для кого
- Администраторы системы, назначающие роли и User Permission.
- Руководители при делегировании доступа к проектам и данным.
- Разработчики при реализации проверок в коде и при интеграции с замещениями.
- Все пользователи — доступ к данным определяется их ролями и разрешениями.
Основные понятия
- Role — роль пользователя; определяет набор прав на тип документа (Read, Write, Create, Delete, Submit и т.д.) через настройки разрешений (Permission).
- User Permission — ограничение видимости: пользователь видит только те документы, у которых связанное поле (например, Customer, Project) совпадает с разрешенным значением. Назначается для User + applicable for тип документа + allow документ/значение.
- Permission — правило доступа к тип документа для роли: уровень доступа (Read/Write/Create/Delete/Submit) и при необходимости условия (если поддерживается).
- Dinext — приложение с дополнительной моделью ограничений на уровне тип документа (README).
- Dinext — проверка прав от имени другого пользователя (README).
- Проверки доступа при выборках выполняются в db_query и при чтении документа.
Основные сущности / объекты
- Role, User Permission ; db_query.py .
- Dinext (README).
- Dinext (README).
Основные сценарии / процессов
Назначение ролей пользователю
- Открыть карточку User; в блоке ролей добавить нужные роли (Project Manager, Sales User и т.д.).
- Сохранить; права на тип документа определяются матрицей Permission для этих ролей.
- Проверить доступ: войти под пользователем и убедиться, что видимы только нужные модули и действия.
Настройка User Permission
- Создать User Permission: User, Allow тип документа (тип документа, к которому применяется ограничение), for value (конкретный документ, например клиент или проект) или apply to all.
- При «for value» пользователь будет видеть только документы, у которых связь с этим тип документа совпадает с указанным значением (например, только документы своего проекта).
- Можно создать несколько User Permission для одного пользователя (несколько проектов, несколько клиентов — в зависимости от логики «allow»).
- Учесть: при строгих ограничениях пользователь не увидит документы без заполненной связи или с другим значением; тестовые данные должны соответствовать.
Дополнительные ограничения
- При установленном Dinext настроить правила ограничений на уровне тип документа по документации приложения.
- Правила могут дополнять стандартные Permission и User Permission для тонкой настройки доступа.
- Проверка прав от имени другого пользователя используется в сценариях замещения и аудита; вызывать только из доверенного кода с учетом политики безопасности.
Правила и ограничения
- Пользователь получает объединение прав всех своих ролей (любая разрешенная роль дает право). Ограничения — пересечение: User Permission сужает видимость.
- Отсутствие прав на тип документа скрывает его из меню и из поиска; при прямом обращении по ссылке система вернет ошибку доступа.
- Изменение ролей и User Permission влияет на всех сеансы пользователя после следующего запроса; при необходимости пользователю перелогиниться.
Результаты / отчетность
- Список пользователей с назначенными ролями.
- Список User Permission с фильтрами по пользователю и тип документа.
- Фактический доступ пользователя — проверка входа под его учетной записью и просмотр списков/документов.
Типовые вопросы и ошибки (FAQ)
Пользователь не видит документы, хотя роль назначена
Проверьте User Permission: если для пользователя задано ограничение (например, только Project = X), он увидит только документы с этим проектом. Убедитесь, что у документов заполнено поле проекта и значение совпадает с разрешенным. Временно отключите User Permission для проверки.
Как дать доступ только к своим документам?
Вариант 1: User Permission на тип документа с полем «Owner» или «Assigned to» — разрешить только документы, где owner/assignee = этот пользователь (если приложение поддерживает such Allow и for value). Вариант 2: в Permission для роли задать условие «owner» (если в вашей версии есть rule по owner). Вариант 3: кастомная проверка в коде или через Dinext.
Где настраиваются права на новый тип документа?
В списке Permission (или через тип документа > Permissions): добавить строки для каждой роли с уровнями Read, Write, Create, Delete, Submit, Cancel и т.д. Права наследуются от родительского тип документа при наличии; при необходимости переопределить для дочернего.