26 lines
1.9 KiB
MySQL
26 lines
1.9 KiB
MySQL
|
|
-- 0012_user_bot_tokens — токен собственного бота у каждого пользователя.
|
|||
|
|
--
|
|||
|
|
-- Зачем: раньше бот был один на весь сервис (TELEGRAM_BOT_TOKEN в env
|
|||
|
|
-- сервера), и уведомления шли только от него. Теперь пользователь может
|
|||
|
|
-- подключить своего бота сам, из раздела «Настройки»: создаёт его в
|
|||
|
|
-- @BotFather, вставляет токен — уведомления уходят через его бота.
|
|||
|
|
-- Глобальный бот остаётся запасным вариантом для тех, кто токен не ввёл.
|
|||
|
|
--
|
|||
|
|
-- Хранение: токен зашифрован на стороне приложения (AES-256-GCM, ключ —
|
|||
|
|
-- секрет DATA_ENCRYPTION_KEY), в базе лежит bytea. Ответ «что это за
|
|||
|
|
-- бот» (telegram_bot_username) берётся из getMe при сохранении и лежит
|
|||
|
|
-- открыто: имя бота секрета не представляет.
|
|||
|
|
--
|
|||
|
|
-- Кто чем владеет:
|
|||
|
|
-- * telegram_bot_token — приватно, читается только своим пользователем,
|
|||
|
|
-- в API не отдаётся вообще (в статусе только has_bot_token);
|
|||
|
|
-- * telegram_target — куда слать (та же колонка, что и раньше).
|
|||
|
|
--
|
|||
|
|
-- Применённый файл не редактировать (checksum в schema_migrations).
|
|||
|
|
|
|||
|
|
ALTER TABLE profiles ADD COLUMN IF NOT EXISTS telegram_bot_token bytea;
|
|||
|
|
ALTER TABLE profiles ADD COLUMN IF NOT EXISTS telegram_bot_username text;
|
|||
|
|
|
|||
|
|
-- Отбор пользователей со своим ботом при старте процесса (реестр ботов
|
|||
|
|
-- и их поллеры): колонка трогается редко, индекс не нужен.
|