Глава 5. Пользователи и права — кто что видит
В прошлой главе мы доделали форму и страницу деталей — заявки можно вводить и просматривать. Но есть проблема: после входа все видят одно и то же. Обычный сотрудник видит управленческую страницу, технический специалист может удалять категории — это никуда не годится.
В этой главе ставим «турникеты»: создадим роли, настроим права на меню и область данных, чтобы разные пользователи видели разное меню и работали с разными данными.
5.1 Понимание ролей (Role)
В NocoBase роль — это набор прав. Не нужно каждому пользователю отдельно настраивать права: определяем несколько ролей и относим к ним пользователей.
После установки в NocoBase есть три встроенные роли:
- Root: суперадминистратор, все права, нельзя удалить
- Admin: администратор, по умолчанию имеет права настройки интерфейса
- Member: обычный пользователь, прав по умолчанию мало
Этих трёх ролей нам не хватит. Для системы заявок нужно более тонкое разделение, поэтому создадим 3 пользовательских роли.
5.2 Создаём три роли
Откройте меню настроек в правом верхнем углу, перейдите в Users & Permissions → Role Management.
Нажмите «Add role» и создайте по очереди:

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

После создания список ролей покажет три новые записи.
5.3 Настраиваем права на меню
Роли созданы — теперь укажем, какие пункты меню видит каждая роль.
Откройте конкретную роль, перейдите на вкладку Menu Access Permissions. Здесь все пункты меню системы; галочка — доступ есть, без галочки — пункт скрыт.
Администратор (admin-helpdesk): всё включено
- Управление заявками, управление категориями, дашборд
Технический специалист (technician): частично
- Управление заявками
- Дашборд
- Управление категориями (тех. специалистам не нужны категории)
Обычный пользователь (user): минимум
- Управление заявками (только свои заявки)
- Управление категориями
- Дашборд

Подсказка: в NocoBase есть удобная опция «Allow access to new menu items by default». Если не хотите при добавлении новых страниц каждый раз вручную включать доступ — включите её для роли администратора. Для обычного пользователя её лучше отключить.
5.4 Настраиваем права на данные
Права на меню решают, может ли пользователь зайти на страницу. Права на данные решают, какие записи он там увидит.
Ключевая концепция: область данных (Data Scope).
В правах роли переключитесь на вкладку Collection Operation Permissions. Найдите таблицу заявок и настройте отдельно.

Обычный пользователь: только свои заявки
- Найдите право View для таблицы «Заявки».
- Область данных → Own data.
- Так обычный пользователь увидит только заявки, где «создатель — он сам». (Внимание: по умолчанию учитывается системное поле «Создатель», а не «Заявитель», но это можно изменить.)
То же самое — для прав «Edit» и «Delete» (или вовсе не давайте Delete).

О глобальной настройке: если настроить только таблицу заявок, могут стать невидимыми остальные данные/конфиги (категории, обработчик). Так как наша система простая, в глобальных настройках просто отметим «View all data», а на таблицах с чувствительной областью данных настроим права отдельно.

Технический специалист: только назначенные ему заявки
- Найдите право View для таблицы «Заявки».
- Область данных → Own data.
- Тонкость: «Own data» в NocoBase по умолчанию фильтрует по создателю. Если хочется фильтровать по «Обработчику», корректируйте в глобальных правах операций или используйте на странице условие фильтрации блока данных.

Полезный приём: в блоке таблицы можно задать дефолтные условия фильтра, например «Обработчик = Текущий пользователь». Но это глобальная настройка — администратора она тоже ограничит. Компромисс: «Обработчик = Текущий пользователь ИЛИ Заявитель = Текущий пользователь» — для обычных пользователей и технических специалистов одновременно. Администратору же сделайте отдельную страницу без этих фильтров.

Администратор: видит все данные
Для администратора область данных = All data, все операции включены. Просто и надёжно.

5.5 Назначение заявки
Перед окончательной настройкой прав добавим в список заявок удобную функцию: назначение обработчика. Администратор сможет назначить заявку технику прямо из списка, без перехода на страницу редактирования.
Реализация простая — кастомная кнопка-окно в колонке операций:
- В режиме UI Editor в колонке операций таблицы заявок нажмите «+» и добавьте операцию «Popup».

- Измените заголовок кнопки на «Назначить» (через настройки кнопки).

Поскольку у нас одна простая операция назначения, удобнее простое модальное окно, а не выезжающая панель. В настройках кнопки выберите Popup settings → Dialog Narrow → Confirm.

- Нажмите кнопку «Назначить», в окне выберите «Add block → Data block → Form (Edit)» и выберите текущую таблицу.
- В форме отметьте только поле «Обработчик» и в его настройках сделайте обязательным.
- Добавьте кнопку «Submit».

Так администратор в списке заявок нажимает «Назначить», открывается лаконичная форма, выбирает обработчика и отправляет. Быстро, точно, без случайных правок.
Скрытие кнопки через связное правило
Кнопка «Назначить» нужна только администратору, а у обычных пользователей и технических специалистов она вызовет путаницу. Скроем её через связное правило в зависимости от роли:
- В режиме UI Editor нажмите настройки кнопки «Назначить» и найдите «Linkage rules».
- Добавьте правило: Текущий пользователь / Роль / Имя роли не равно Администратор (название роли admin-helpdesk).
- Действие при выполнении условия: скрыть кнопку.
Так кнопку видит только администратор; у других ролей при входе она автоматически скрывается.

5.6 Создаём тестовых пользователей и проверяем
Права настроены — проверим на практике.
Откройте Управление пользователями (центр настроек или собранная Вами ранее страница) и создайте 3 тестовых пользователей:

Затем войдите под каждой учёткой и проверьте две вещи:
1. Меню отображается, как задумано?
- Alice → видит все пункты меню

- Bob → видит только Управление заявками и дашборд

- Charlie → видит только «Мои заявки»

2. Данные фильтруются, как задумано?
- Сначала под Alice создайте несколько заявок и распределите их разным обработчикам.
- Войдите под Bob — он увидит только назначенные ему заявки.
- Войдите под Charlie — он увидит только свои заявки.
Круто, правда? Одна и та же система, а пользователи видят совершенно разное! В этом сила прав.
Итоги главы
В этой главе мы построили систему прав:
- 3 роли: администратор, технический специалист, обычный пользователь
- Права на меню: какая роль попадает на какие страницы
- Права на данные: какая роль видит какие записи (через область данных)
- Проверка: вход разными учётками подтверждает корректность
Система заявок выглядит как настоящая: вводить, просматривать, контролировать доступ — всё умеет. Но операции пока ручные.
Анонс следующей главы
В следующей главе разберём Workflow — пусть система работает за нас сама. Например, при создании заявки автоматически уведомлять обработчика, при изменении статуса — записывать журнал.
Связанные ресурсы
- Управление пользователями — подробно
- Роли и права — настройка ролей
- Область данных — права на уровне данных

