За кулисами: Как мы реализуем взаимодействие пользователей в многопользовательском приложении
Практики и инсайты по реализации функции приглашений и управления доступом по ролям, таких как совместная работа в Logto Cloud, в многопользовательском приложении.
Предыстория
На прошлой неделе мы представили функцию совместной работы в Logto Cloud. Если ты пропустил, обязательно взгляни! Теперь ты можешь приглашать коллег и соработников в существующие Logto тенанты, совместно работая над поддержанием идентификационной системы для твоих приложений.
В этом выпуске функции мы добавили две роли для каждого Logto тенанта:
- Админ: Полный доступ к тенанту, включая управление ресурсами, связанными с идентификацией, приглашение и управление другими участниками, обработку оплаты и просмотр истории оплат.
- Сотрудник: Может управлять ресурсами, связанными с идентификацией, но не имеет доступа к другим функциям администрирования.
В соответствии с нашим обязательством использовать собственные инструменты, мы использовали наш RBAC (Role-Based Access Control) и Организации для пос троения взаимодействия пользователей. Если ты новичок в RBAC, ознакомься с нашим предыдущим постом, чтобы начать.
В этом посте блога давайте посмотрим, что было сделано для реализации этой функции и как эти практики могут быть полезны, если ты разрабатываешь приложения для нескольких организаций.
Совместная работа в Logto Cloud построена на основе Организаций Logto
Каждый тенант Logto Cloud функционирует как независимая организация в нашей системе, благодаря функции Организаций. Чтобы ввести роли администратора и сотрудника, мы создали две роли организации в шаблоне организации, для каждой из которых назначен определённый набор прав организации.
Управление приглашениями с помощью Logto Management API
Мы предоставили набор API для управления приглашениями в функции организаций. С помощью этих API ты можешь, например:
POST /api/organization-invitations
создать и отправить приглашение в организацию на адрес электронной почтыGET /api/organization-invitations
иGET /api/organization-invitations/{id}
получить свои приглашенияPUT /api/organization-invitations/{id}/status
принять или отклонить приглашение, изменив его статус
Для получения более подробной информации см. полную документацию API.
Подключись к своему email-коннектору
Так как приглашения отправляются по электронной почте, убедись, что твой email-коннектор правильно настроен. В этом выпуске мы представили новый тип использования шаблона электронной почты, OrganizationInvitation
, который позволяет настраивать шаблон письма-приглашения.
Этот шаблон по умолчанию принимает переменную {{link}}
, которая является ссылкой на целевую страницу Logto Console, где пользователи могут принять приглашение и присоединиться к тенанту Logto. Одна из целевых страниц в Logto Cloud выглядит как показано на следующем снимке экрана:
См. документацию API для получения подробной информации о том, как отправлять письмо-приглашение через Management API.
Используй RBAC для управления разрешениями пользователей
С помощью вышеперечисленных настроек мы можем отправлять приглашения по электронной почте, и приглашенные пользователи могут присоединяться к организации с назначенной ролью.
Пользователи с разными ролями в организации будут иметь разные области (разрешения) в своих токенах доступа. Таким образом, как клиентское приложение (Logto Console), так и наши серверные службы должны проверять эти области для определения доступных функций и разрешенных действий.
Хорошо, кажется, что всё связано, но чего ещё не хватает?
Управление обновлениями областей в токенах доступа
Управление обновлениями областей в токенах доступа включает:
- Отзыв существующих областей: Например, понижение админа до сотрудника автоматически уменьшает области в новом токене доступа, полученном с уже имеющимся рефреш-токеном.
- Предоставление новых областей: Напротив, продвижение пользователя до админа требует запуска процесса повторного входа или повторного согласия, чтобы отразить изменение в токенах доступа пользователя.
В Logto Cloud Console активно проверяет области пользователей с помощью SWR запросов, и мы автоматически предоставляем согласие всякий раз, когда пользователь повышается до админа.
Если ты реализуешь аналогичную функцию с использованием RBAC, тебе понадобится механизм (например, WebSocket или серверные push-события) для уведомления твоего приложения об обновлениях областей, позволяя повторное согласие или выдачу новых токенов доступа. Logto также предоставит больше вебхуков для помощи с этим в будущих обновлениях.
В итоге
Функции многоарендности и совместной работы в Logto Cloud активно используют нашу функцию Организаций. Если ты разрабатываешь аналогичное многопользовательское приложение, подумай о применении этой функции с аналогичными подходами.
Надеюсь, этот пост был полезен. Если у тебя есть вопросы или тебе хочется обсудить, присоединяйся к нашему каналу в Discord.