В данной статье мы рассмотрим, как no-code платформа AppMaster.io решает задачу доступа пользователей приложения к данным.

На нашей платформе это происходит с помощью внедрения ролей, таких как Users, Moderators, Admins и другие, по требованию. Это решение дает больше гибкости внутри вашего собранного приложения и позволяет распоряжаться тем, кто какие информацию и функционал получает внутри приложения.

Статья будет полезна всем, кто хочет углубиться в функционал платформы AppMaster.io и увидеть ее возможности настроек доступа к данным по ролям.

Модуль Auth от AppMaster.io

Регистрация в собранном приложении на нашей платформе представлена модулем Auth, который позволяет создавать и редактировать группы пользователей и права доступа к ним. Модуль Auth уже предустановлен в проект при его создании.

Мodule Auth by AppMaster.io

Доступные настройки модуля 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

Для работы с моделями в AppMaster.io используется Data Model Designer.

User и User Session – две модели, которые автоматически создаются в Data Model Designer. Предустановленные поля моделей данных нельзя изменить или удалить, но Вы можете добавить новые.

Для этих моделей, также, автоматически создаются блоки бизнес-процессов (БП).

Автосгенерированные БП, связанные с User и User Sessions:

  • User Model

DB: Delete User — удаляет объект User из базы данных по переданному ID;

Delete User in AppMaster

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

Update User

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

Create User

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

Soft Delete User

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

Bulk Delete User

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

Patch User

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

Search User

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

GetOne User

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

Expand User

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

Make User

  • User Session Model

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

Delete User Session

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

Update User Session

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

Create User Session

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

Soft Delete User Session

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

failed_ids — массив определяет набор идентификаторов, которые не будут удалены;

Bulk Delete User Session

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

Patch User Session

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

Search User Session

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

GetOne User Session

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

Expand User Session

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

Make User Session

  • Модуль авторизации

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

Generate Auth Token

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

Auth: Registration

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

Auth: Authorization

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

Auth: Authentification

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

Auth: Logout

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

Auth: Get current user

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

Auth: Remove user from group

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

Auth: Add user to the group

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

Auth: Hash Password

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

Auth: Restore Password

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

Auth: Change Password

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

Auth: Probe Password

Endpoints модуля Auth Module и моделей User и User Session автоматически генерируются при создании проекта.

Auth Module

Тип запросаEndpointСвязанный БП
post type
/logout/Auth: Logout
post type/auth/

Auth: Authentification

post type/register/Auth: Registration
get type/confirm/Auth: Registration
put type/user/change-password/Auth: Change Password
post type/user/restore-password/Auth: Restore Password
get type/user/profile/Auth: Authorization

User

Тип запросаEndpointСвязанный БП
put type/user/:id/DB: Update User
delete type/user/:id/DB: Delete User
get type/user/:id/DB: GetOne User
get type/user/DB: Search User
patch type/user/:id/DB: Patch User
post type/user/DB: Create User

User session

Тип запросаEndpointСвязанный БП
delete type/user-session/:id/DB: Delete User Session
get type/user-session/:id/DB: GetOne User Session
get type AppMaster/user-session/DB: Search User Session
patch type AppMaster/user-session/:id/DB: Patch User Session
post type AppMaster/user-session/DB: Create User Session
put type AppMaster/user-session/DB: Update User Session

Auth Token используется в качестве токена текущей сессии авторизованного пользователя. В БП веб-приложения есть возможность взаимодействовать с этим токеном:

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

Get Auth Token returns the Auth of the current authenticated user session

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

В примере показано, как получить текущего пользователя.

Для этого нужно перейти во вкладку Business logic и перетащить блок Auth: Get current user.

Далее для созданного БП создается Endpoint, который будет использоваться для обращения к серверу, чтобы получить объект user текущего пользователя.

Выберите группу user в разделе Endpoints и создайте GET метод запроса для только что созданного процесса получения текущего пользователя.

В БП веб-приложения выполните запрос к созданному endpoint (Server request GET /user_current), чтобы получить текущего пользователя.

Группы и разрешения

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

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

Редактировать группу AppMaster

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

Editing existing user groups

Для изменения прав чтения/записи записей в БД для определенных групп пользователей используется Middleware модуля Auth.

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

Access to pages in the web application

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

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

Access to pages in the web application 2

Итоги

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