Глава 6: Пользователи и права доступа
В командной работе у каждого должны быть чёткие обязанности и права — только тогда работа идёт гладко. Сегодня мы вместе освоим создание ролей и управление правами доступа, чтобы совместная работа стала упорядоченной и удобной.
Не волнуйтесь — процесс не сложный, мы шаг за шагом проведём Вас через ключевые моменты. Если возникнут вопросы — обращайтесь на наш официальный форум.
Анализ требований:
Нам нужна роль «Партнёр» (Partner), которая обладает правами для участия в управлении задачами, но не может произвольно менять чужие задачи. Так мы сможем гибко распределять работу и взаимодействовать в команде.
О ролях и правах: роли и права — важный механизм управления доступом и операциями пользователей, обеспечивающий безопасность системы и целостность данных. Роли назначаются пользователям, у одного пользователя может быть несколько ролей. Через настройку прав ролей можно контролировать поведение пользователей в системе, доступ к функциям UI и т. д. — ключевой инструмент управления доступом. Связав роли и права с пользователями, в этом учебнике Вы сможете полностью контролировать свою систему: как администратор Вы по своему усмотрению определяете, кто и какие действия может выполнять!
6.1 Создание роли и назначение пользователю
6.1.1 Создание роли «Партнёр (Partner)»
- В правом верхнем углу UI нажмите «Пользователи и права», выберите «Роли и права». Здесь мы на страиваем роли и управляем правами.
- Нажмите кнопку «Создать роль» — откроется диалоговое окно. Введите название роли — Партнёр (Partner) — и сохраните.

Роль успешно создана! Теперь нужно назначить ей права, чтобы она могла участвовать в управлении задачами.
6.1.2 Назначение новой роли своему аккаунту
Чтобы убедиться, что настроенные права работают, назначим роль своему аккаунту и протестируем. Это просто:
- В управлении пользователями найдите свой аккаунт, откройте его, выберите «Назначить роль» и выберите «Партнёр».

Теперь Вы можете «вживую» проверить роль «Партнёр». Посмотрим, как переключаться между ролями.
6.1.3 Переключение на роль «Партнёр»
Роль «Па ртнёр» уже назначена Вашему аккаунту. Посмотрим, как переключаться между ролями.
- Откройте Личный кабинет в правом верхнем углу и выберите «Сменить роль».
- Возможно, в списке ещё не появилась роль «Партнёр» — не пугайтесь, достаточно обновить страницу/кэш, и она появится!

6.2 Назначение прав на страницы для роли
Переключившись на роль «Партнёр», Вы заметите, что в системе нет ни страниц, ни меню. Это потому, что у роли пока нет прав доступа к страницам. Сейчас исправим.
6.2.1 Назначение прав на страницу задач для роли «Партнёр»
- Сначала переключитесь обратно на роль Root (суперадминистратор) и зайдите в раздел «Роли и права».
- Откройте роль «Партнёр» и перейдите на страницу её нас тройки. Здесь будет вкладка «Меню», где перечислены все страницы системы.
- Отметьте право доступа к странице «Управление задачами» — теперь роль «Партнёр» сможет открывать эту страницу.
Вернитесь в личный кабинет, снова переключитесь на роль «Партнёр» — пункт меню «Управление задачами» уже доступен.

6.2.2 Настройка прав на таблицы и операции
Хотя «Партнёр» теперь видит страницу управления задачами, нужно ограничить выполняемые им операции. Мы хотим, чтобы «Партнёр» мог:
- Просматривать и редактировать задачи, назначенные ему;
- Обновлять прогресс задач;
- но не мог создавать или удалять задачи.
Для этого настроим права таблицы задач. Вперёд!
6.2.2.1 Настройка прав таблиц для роли «Партнёр»
- Зайдите в раздел «Роли и права», откройте роль «Партнёр» и перейдите на вкладку «Источники данных».
- Здесь видно настройку «Прав на операции с таблицами». Найдите «Таблицу задач» и выдайте «Партнёру» права «Просмотр» и «Редактирование».
- Почему права редактирования распространяются на «все данные»? Сейчас мы временно даём «Партнёру» полные права редактирования. Позднее мы динамически ограничим права на уровне полей по «ответственному за задачу». Поэтому изначально оставляем максимальные права — последующее управление будет более гибким.
- Права «Создавать» и «Удалять» давать другим ролям нежелательно, поэтому их сразу не назначаем.

Итак, роль «Партнёр» теперь имеет права на просмотр и редактирование всех задач. Дальше мы добавим более тонкий контроль, чтобы пользователь мог редактировать только закреплённые за ним задачи.
6.3 Добавление поля «Ответственный» в таблицу задач
Назначим каждой задаче ответственного. Так только ответственный сможет менять задачу, остальные смогут только её просматривать. Здесь нам понадобится поле отношения, связывающее таблицу задач с таблицей пользователей.
6.3.1 Создание поля «Ответственный»
- Откройте «Таблицу задач», нажмите «Добавить поле» и выберите «Поле отношения».
- Выберите связь «Многие-к-одному» (у задачи только один ответственный, а пользователь может отвечать за множество задач).
- Назовите поле «Ответственный (Assignee)». Обратное поле пока нам не нужно — галочку не ставим.

6.3.2 Отображение поля «Ответственный»
Теперь нужно, чтобы поле «Ответственный» отображалось в таблице и форм ах страницы управления задачами — чтобы Вы могли удобно назначать ответственных. (Если по умолчанию показывается ID, не пугайтесь: смените заголовочное поле с ID на «Псевдоним».)

6.4 Контроль прав через Управление правами
Самое интересное! Сейчас мы используем Управление правами NocoBase, чтобы реализовать мощную возможность: редактировать задачу могут только её ответственный и создатель, остальные могут только просматривать. Гибкость NocoBase сейчас раскроется во всей красе.
6.4.1 Простая попытка: форму редактирует только ответственный
Мы хотим, чтобы редактировать задачу мог только её ответственный, поэтому зададим следующие условия:
- Вернитесь в права «Партнёра» на таблицы, откройте «Конфигурацию» таблицы задач и нажмите «Диапазон данных» рядом с «Правами на редактирование».
- Создайте новое пользовательское правило с названием «Может редактировать ответственный»: Когда «Ответственный/ID» равен «Текущий пользователь/ID», редактирование разрешено; то есть редактировать задачу может только её ответственный, остальные могут только просматривать.
- Поскольку поле «Ответственный» ссылается на таблицу пользователей, а текущий пользователь тоже из неё, это правило идеально удовлетворяет нашему требованию.
Нажмите «Добавить» и подтвердите.

Вернёмся на страницу:
Отлично! Переключим роль на «Партнёр», вернёмся на страницу: операция «Редактировать» появляется только для тех проектов, где ответственным являемся мы сами.

6.4.2 Дополнительное условие: создатель может изменять форму
Дальше Вы быстро столкнётесь с новой проблемой:
Большая часть задач не наша, мы не можем их редактировать, и другие участники тоже не видят детали задач!
Не волнуйтесь — помните, что мы выдали «Партнёру» право «Просмотр» всех данных?
- Вернитесь на страницу, в конфигурации добавьте операцию «Просмотр».

- По аналогии с модальным окном редактирования соберите модальное окно просмотра — обязательно выберите блок «Подробности».


Готово!
6.5 Проверка контроля прав
Если Вы переключитесь между разными пользователями и посмотрите формы, увидите, что блок формы автоматически показывает разные операции в соответствии с правами пользователя. Все задачи, за которые мы отвечаем, открыты для редактирования; задачи, где мы не ответственные, доступны только для просмотра.
При переключении на роль Root все права восстанавливаются — в этом и сила контроля прав NocoBase!
Теперь можно произвольно назначать ответственных за задачи и работать с командой. Добавим нового члена команды и проверим, корректно ли настроены права.
6.5.1 Создание нового пользователя и назначение роли
- Создайте нового пользователя, например Tom, и назначьте ему роль «Партнёр».


- На странице управления задачами назначьте Tom несколько задач.
6.5.2 Тест с входом
Пусть Tom войдёт в систему и проверит, может ли он просматривать и редактировать назначенные ему задачи. По нашим правилам он сможет редактировать только свои задачи, остальные будут доступны е му только для чтения.
Права на редактирование форм синхронизировались по всем страницам!

Итог
Поздравляем! Теперь Вы знаете, как в NocoBase создавать роли, назначать им права и настраивать пользовательские правила, чтобы участники могли редактировать только свои задачи. Так Вы построили чёткую и упорядоченную систему управления правами для командной работы.
Задание-вызов
Tom уже может просматривать и редактировать свои задачи, но Вы могли заметить: он ещё не может оставлять комментарии и не может участвовать в обсуждении. Как же дать Tom права свободно комментировать и общаться? Это интересный вызов!
Подсказка:
Попробуйте вернуться к настройке прав ролей и изменить права роли «Партнёр», например на уровне таблиц данных, так чтобы у Tom появилось право комментировать, не нарушая остальных ограничений.
Дерзайте! Ответ раскроем в следующей главе.
В следующей главе мы реализуем функцию «Лента активности участников» и познакомимся ещё с одним мощным модулем — Рабочие процессы. С их помощью можно динамически перемещать данные, запускать различные операции и автоматизировать рутинные бизнес-процессы. Готовы продолжить? До встречи в Главе 7: Рабочие процессы — автоматизация и резкий рост эффективности!
Продолжайте экспериментировать! Если возникнут вопросы — не забывайте о официальной документации NocoBase и сообществе NocoBase.

