wf-team-invite
Назначение
Преобразует вставленный список людей — «имя + адрес», в любой форме, в которой
его записал человек, — в учётные записи пользователей, роли, карточки
сотрудников и приглашения, а затем отправляет каждому ссылку для входа.
Он существует потому, что четыре сервиса должны согласованно обработать одну
строку этого списка (, rp-identity, rp-access, rp-staff иrp-auth
почтовая лямбда), а микросервисы не вызывают друг друга.
Почему это также граница привилегий
полностью отклоняет JWT пользователя (rp-access), поэтому@Access("internal")
ни одна поверхность не может выдать роль. centimanus запускает этот скрипт с, а право на его запуск является обычным разрешением —SERVICE_TOKEN, проверяемым на границеwf/workflows/wf-team-invite.js(x)
() и записанным в одном файле пресетов. Поэтому вsignal_provider.zig:146
продукте нет понятия «администратор».
Скрипт не может узнать, кто его вызвал, поэтому защита от повышения привилегий
представляет собой фиксированный список: , manager, operator.viewer и owner здесь нельзя выдавать.root
Структура
- текстовые источники —
+files.materialize, а такжеfiles.extractText;rawText - люди — сначала
, построчное регулярное выражение в качествеrt.llm
запасного варианта; - один
на человека — пользователь, базовый пресет + роль, тегиrt.attempt
группы, карточка, приглашение; - письмо — отдельная попытка, поэтому отклонённая ретрансляция является
ответвлением, а не потерянной учётной записью; - отчёт, чьи
поверхность превращает в открытую таблицу, содержащуюstaffIds
ровно этих людей.
Повторный запуск для того же списка безопасен: известный адрес получает статус, а не создаёт вторую учётную запись.updated
Прямые зависимости модулей
,g-access,g-auth,g-files,g-identity,g-notify,g-ses,g-smtpg-staff
Членство в решении
production
Исходный код
modules/workflows/wf-team-invite