Встроенная страница RefLink
Этот пример относится к плагину RefLink. Общий порядок подключения своей страницы описан во «Встроенной странице».
Как открывается страница
- Пользователь открывает RefLink в проекте. Кабинет загружает frontend во встроенной странице и передаёт контекст запуска через Senler Bridge.
- Frontend получает
launch_codeиproject_idвuseEmbeddedRefLinkApp.ts. Значениеproject_idнужно интерфейсу для проверки соответствия, но само по себе оно не даёт доступ. - Frontend отправляет одноразовый
launch_codeвPOST /api/embedded/session. - Backend проверяет подпись, срок и одноразовость кода в
backend/src/core/session, извлекает из него проект и выдаёт собственныйsession_tokenRefLink. - Все следующие запросы страницы используют этот
session_token.EmbeddedSessionGuardснова извлекает проект из проверенной сессии, поэтому контроллерам не нуженproject_idиз формы или URL. - Если проект ещё не подключён по OAuth, frontend показывает
AuthorizationStep. После согласия backend получает project-scoped OAuth-токены Senler и сохраняет их для этого проекта. - Для загрузки каналов, агентов, сегментов и автоматизаций backend берёт OAuth access token и вызывает API Senler через
SenlerApiClient.
Итог: браузер знает только сессию RefLink, а доступ к API Senler и Client Secret остаются на backend.
Один frontend обслуживает несколько контекстов
Общая точка входа уменьшает дублирование авторизации, загрузки данных, стилей и компонентов. Разница между основной страницей и формой шага определяется не отдельным URL, а проверенным context.launch.type от Senler Bridge.
Если приложение добавит конфигуратор инструмента агента, эту схему можно расширить третьей явной веткой tool_configurator, не смешивая сохранение настроек с обычной работой страницы.
Сессия страницы, management session и OAuth-токен решают разные задачи. Не подменяйте один другим: их назначение приведено в схеме авторизации RefLink.