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