Modules/Community/) содержит два подмодуля: TelegramAuth (хранилище пользователей, HTTP API /tg/auth/..., синхронизация с accsdb) и TelegramAuthBot (бот для привязки UID). Вместе они заменяют стандартную модалку пароля/CUB на полноэкранный Telegram-гейт.
Оба модуля по умолчанию находятся в
BaseModule.SkipModules и имеют "enable": false в manifest.json. Для включения нужно выполнить все шаги ниже.Состав
Поток авторизации
- Клиент Lampa получает UID устройства
- Пользователь открывает бота (автоматически через
/start link_{uid}или вручную отправляет UID) - Бот вызывает
POST /tg/auth/bind/complete - Клиент опрашивает
GET /tg/auth/status?uid=... - После успеха: Lampac видит UID в
users.json, accsdb разблокирован
Быстрый старт
1
Задайте секции в init.conf
Скопируйте структуру из
Modules/Community/TelegramAuth/init.merge.example.json и TelegramAuthBot/init.merge.example.json в ваш init.conf.2
Одинаковый secrets_api_secret
mutations_api_secret должен совпадать в обоих модулях и быть ненулевым в проде (защита bind/complete и бот-админки).3
Включите в manifest.json
В
manifest.json каждого из модулей установите "enable": true.4
Уберите из SkipModules
Удалите
TelegramAuth и TelegramAuthBot из BaseModule.SkipModules в init.conf.5
Включите TelegramAuth.enable
Установите
TelegramAuth.enable: true — это поднимает accsdb.enable и синхронизирует привязанные UID в users.json.6
Телеграм-гейт вместо deny.js (опционально)
Добавьте блок
telegramAuthGate в секцию LampaWeb для замены стандартного экрана пароля на Telegram-гейт.Telegram Auth Gate
По умолчанию при включённом accsdb клиент видитdeny.js с модалкой пароля и CUB. Чтобы заменить её на Telegram-гейт, добавьте в init.conf:
accsdb.enable: truetelegramAuthGate.enabled: true- Непустой
botUsername(code проверяетIsNullOrWhiteSpace)
deny.js с warning в логе.
Что делает telegram_auth_gate.js
- Показывает fullscreen overlay: UID устройства, кнопку «Открыть Telegram» и QR-код (на крупных экранах)
- Опрашивает
GET /tg/auth/status?uid=...каждыеcheckIntervalMs - После успеха: сохраняет
tg_auth_userвLampa.Storage, отправляетPOST /tg/auth/device/name, затем перезагружает страницу