← Ко всем записям

Миграция UI

Hosted-UI на Go + templ: i18n, тёмная тема, встроенные ассеты

10 мин

Внутри AuthKit: как Renderer, ViewConfig и StaticFS держат hosted-UI входа provider-agnostic — и почему сама страница никогда не импортирует credential-бэкенд.

Hosted-UI — небольшой Go-модуль, но его структура несёт всю историю продукта: провайдеры приходят и уходят, UI остаётся прежним.

Поверхность Renderer

  • RenderLogin(w, r, ViewConfig)
  • RenderLogout(w, r, ViewConfig)
  • RenderError(w, r, ViewConfig, err)
  • StaticFS() для /static/...

Контракт — это ViewConfig

Host-приложение передаёт брендинг, FlowConfig и FeatureFlags. FlowConfig несёт API URL, имя сессионной cookie, путь логаута и — критично — SDKScript: URL бандла браузерного SDK для активного провайдера. AuthKit не знает, говорит ли этот бандл с Hanko, Supabase или собственным Postgres-бэкендом.

Почему это важно

  • Один и тот же UI-модуль рисует страницу входа для каждого провайдера, который мы поддерживаем сегодня и завтра.
  • Провайдер-специфичные ассеты живут в собственной static FS (например, authkit-hanko) и мерджатся под тем же префиксом /static/.
  • i18n встроена в бинарь; никаких рантайм-загрузок языковых файлов нет.

Операционные свойства

  • Шаблоны компилируются в Go через templ; XSS-экранирование автоматическое.
  • Тёмная тема — CSS-переключатель в localStorage, с no-flash inline boot script.
  • Бандл статики content-hashed и агрессивно кешируется на edge.

Логотип Auth Fly

Auth Fly

Открытый конструктор аутентификации

Об Auth Fly