Настройка доступа к данным по ролям на AppMaster.io
Обзор того, как AppMaster.io решает проблему доступа к данным для пользователей приложения.

В данной статье мы рассмотрим, как no-code платформа AppMaster.io решает задачу доступа пользователей приложения к данным.
На нашей платформе это происходит с помощью внедрения ролей, таких как Users, Moderators, Admins и другие, по требованию. Это решение дает больше гибкости внутри вашего собранного приложения и позволяет распоряжаться тем, кто какие информацию и функционал получает внутри приложения.
Статья будет полезна всем, кто хочет углубиться в функционал платформы AppMaster.io и увидеть ее возможности настроек доступа к данным по ролям.
Модуль Auth от AppMaster.io
Регистрация в собранном приложении на нашей платформе представлена модулем Auth, который позволяет создавать и редактировать группы пользователей и права доступа к ним. Модуль Auth уже предустановлен в проект при его создании.

Доступные настройки модуля Auth:
SignUp Groups — список групп пользователей, которым доступна регистрация;
SignUp— включает возможность регистрации в приложении;
Session timeout (minutes) — время, после которого завершится текущая сессия пользователя при его бездействии (в минутах). По умолчанию составляет 60 мин;
Failed login delay (in ms) — время задержки на ответ от сервера при неудачной попытке логина (в мс). По умолчанию составляет 0 мс;
Email confirmation required — опция, требующая подтверждения через электронную почту, если она включена;
Signed-Up User Active — присваивает атрибуту active значение true для каждого зарегистрированного пользователя User;
Groups — позволяет создавать и редактировать группы пользователей.

Для работы с моделями в AppMaster.io используется Data Model Designer.
User и User Session – две модели, которые автоматически создаются в Data Model Designer. Предустановленные поля моделей данных нельзя изменить или удалить, но Вы можете добавить новые.
Для этих моделей, также, автоматически создаются блоки бизнес-процессов (БП).
Автосгенерированные БП, связанные с User и User Sessions:
- User Model
DB: Delete User — удаляет объект User из базы данных по переданному ID;

DB: Update User — сбрасывает все поля блока Пользователь-объект, переданные на вход в БД, и обновляет их в соответствии с заданными значениями (для изменения только указанных полей используется блок БД: Обновление пользователя);

DB: Create User — сохраняет в базе данных и возвращает заданный объект пользователя (чтобы построить его из заданных полей, используйте блок «Создать пользователя»);

DB: Soft Delete User — обновляет атрибут DeletedAt объекта «Пользователь» и оставляет его в базе данных;

DB: Bulk Delete User— принимает на вход массив идентификаторов (id) объектов User, которые будут удалены из базы данных;
failed_ids — массив идентификаторов пользователей, которые не будут удалены;

DB: Patch User — обновляет указанные поля объекта «Пользователь» в базе данных (для сброса всех полей используйте блок DB: Update User);

DB: Search User — находит один или несколько объектов User в базе данных на основе полей и возвращает их;

DB: GetOne User — находит в БД объект User по его ID и возвращает его;

Expand User — возвращает все поля выбранного объекта «Пользователь»;

Make User — создает в памяти новый объект «Пользователь» из заданных полей и возвращает его (для сохранения созданного объекта в базе данных используйте блок DB: Create User);

- User Session Model
DB: Delete User Session — удаляет объект User Session из БД по переданному ID;

DB: Update User Session — сбрасывает все поля объекта «Пользовательская сессия», переданные в блок ввода в базе данных, и обновляет их в соответствии с заданными значениями (чтобы изменить только указанные поля, используйте DB: Patch User Session);

DB: Create User Session — сохраняет в базе данных и возвращает заданный объект User Session (чтобы построить его из заданных полей, используйте блок Make User Session);

DB: Soft Delete User Session — обновляет атрибут DeletedAt объекта User Session и оставляет его в базе данных;

DB: Bulk Delete User Session — принимает на вход набор идентификаторов объектов пользовательских сессий, которые будут удалены из базы данных;
failed_ids— массив определяет набор идентификаторов, которые не будут удалены;

DB: Patch User Session — обновляет заданные поля объекта Пользовательская сессия в базе данных (для сброса всех полей используйте блок БД: DB: Update User Session);

DB: Search User Session — находит в базе данных один или несколько объектов User Session на основе полей и возвращает их;

DB: GetOne User Session — находит объект User Session в БД по его ID и возвращает его;

Expand User Session — возвращает все поля выбранного объекта User Session;

Make User Session — создает в памяти новый объект User Session из заданных полей и возвращает его (для сохранения созданного объекта в БД используйте блок DB: Create User Session);

- Модуль авторизации
Auth: Generate Auth Token — генерирует токен авторизации (Auth Token) заданной длины;

Auth: Registration — регистрирует нового пользователя;

Auth: Authorization — проверяет наличие Auth Token в системе и возвращает связанного с ним пользователя;

Auth: Authentification — проверяет логин и пароль пользователя и возвращает Auth Token;

Auth: Logout — принимает Auth Token и завершает текущую сессию пользователя;

Auth: Get current user — возвращает данные текущего пользователя;

Auth: Remove user from group — удаляет пользователя из указанной группы по его ID (определяется в настройках модуля Auth);

Auth: Add user to group — добавляет пользователя в указанную группу пользователей по его ID (определяется в настройках модуля Auth);

Auth: Hash Password — преобразование строки пароля в хэш;

Auth: Restore Password — принимает логин и новый пароль пользователя, тем самым сбрасывая его;

Auth: Change Password — заменяет текущий пароль пользователя на новый;

Auth: Probe Password — проверка совпадения пароля и хеша;

Endpoints модуля Auth Module и моделей User и User Session автоматически генерируются при создании проекта.
Auth Module
Тип запросаEndpointСвязанный БП
/logout/Auth: Logout
/auth/
Auth: Authentification
/register/Auth: Registration
/confirm/Auth: Registration
/user/change-password/Auth: Change Password
/user/restore-password/Auth: Restore Password
/user/profile/Auth: Authorization
User
Тип запросаEndpointСвязанный БП
/user/:id/DB: Update User
/user/:id/DB: Delete User
/user/:id/DB: GetOne User
/user/DB: Search User
/user/:id/DB: Patch User
/user/DB: Create User
User session
Тип запросаEndpointСвязанный БП
/user-session/:id/DB: Delete User Session
/user-session/:id/DB: GetOne User Session
/user-session/DB: Search User Session
/user-session/:id/DB: Patch User Session
/user-session/DB: Create User Session
/user-session/DB: Update User Session
Auth Token используется в качестве токена текущей сессии авторизованного пользователя. В БП веб-приложения есть возможность взаимодействовать с этим токеном:
- Get Auth Token возвращает Auth текущего сеанса аутентифицированного пользователя;

- Set Auth Token перезаписывает Auth Token текущего сеанса авторизованного пользователя;
2. Remove Auth Token удаляет Auth Token текущего сеанса авторизованного пользователя;

В примере показано, как получить текущего пользователя.
Для этого нужно перейти во вкладку Business logic и перетащить блок Auth: Get current user.
Далее для созданного БП создается Endpoint, который будет использоваться для обращения к серверу, чтобы получить объект user текущего пользователя.
Выберите группу user в разделе Endpoints и создайте GET метод запроса для только что созданного процесса получения текущего пользователя.
В БП веб-приложения выполните запрос к созданному endpoint (Server request GET /user_current), чтобы получить текущего пользователя.
Группы и разрешения
Группы пользователей создаются в настройках модуля Auth. Для перехода в настройки модуля необходимо открыть раздел Модули и нажать на карточку соответствующего модуля.
Вкладка «Группы» содержит список всех существующих групп. Щелкните Добавить новый элемент, чтобы создать новую группу пользователей. В новом модальном окне вы можете настроить группу, добавить описание, значок, цвет значка и метки, а также тег.

Для редактирования существующих групп пользователей также необходимо зайти в настройки модуля Auth. Для этого перейдите в раздел Модули и нажмите на карточку соответствующего модуля. Далее во вкладке Группы будет доступен список групп, для его редактирования нужно нажать на иконку настроек. В новом модальном окне вы можете настроить группу, изменить ее описание, значок, цвет значка и метки, а также тег.

Для изменения прав чтения/записи записей в БД для определенных групп пользователей используется Middleware модуля Auth.
В разделе «Endpoints» выберите конечную точку, чьи разрешения на чтение/запись вы хотите изменить. Нажмите на кнопку настроек в нужной Endpoint и перейдите на вкладку Middleware в открывшемся модальном окне. Далее, нажав Edit settings в строке с Token Auth Middleware, настройте права доступа.

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

Итоги
Доступ к данным по ролям — это удобный способ организовать разные потоки информации для отдельных групп пользователей. В триал-доступе к платформеа AppMaster.io вы можете протестировать эту функцию в пробной версии.
В плане Professional, помимо доступа по ролям, доступны экспорт бинарных файлов, резервное копирование, трансфер проектов и многое другое. Ждём вас на платформе AppMaster.io для реализации даже самых смелых ваших проектов.


