19 апр. 2022 г.·3 мин

Настройка доступа к данным по ролям на AppMaster.io

Обзор того, как 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 используется в качестве токена текущей сессии авторизованного пользователя. В БП веб-приложения есть возможность взаимодействовать с этим токеном:

  1. Get Auth Token возвращает Auth текущего сеанса аутентифицированного пользователя;

  1. 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, настройте права доступа.

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

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

Итоги

Больше, чем сайт‑билдер
Разверните production-ready бэкенд и веб‑приложение с чистым сгенерированным кодом.
Создать проект

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

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

Легко начать
Создай что-то невероятное

Экспериментируйте с AppMaster с бесплатной подпиской.
Как только вы будете готовы, вы сможете выбрать подходящий платный план.

Попробовать AppMaster
Настройка доступа к данным по ролям на AppMaster.io | AppMaster