> ## Documentation Index
> Fetch the complete documentation index at: https://docs.axottle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Вход через Telegram

> Подключение Telegram как способа входа в панель и портал поддержки: настройка провайдера, привязка аккаунтов, диагностика.

Telegram можно использовать как способ входа в панель Axottle и в портал поддержки — вместо пароля или вместе с ним. Вход выполняется по официальному протоколу [Log In With Telegram](https://core.telegram.org/bots/telegram-login).

<Info>
  Для кого: администратор панели с правом **Управление пользователями**.
  Что понадобится: доступ к [@BotFather](https://t.me/BotFather) и домен, на котором работает панель.
</Info>

<Warning>
  Самостоятельной регистрации нет. Войти через Telegram может только тот, кому администратор заранее создал учётную запись и привязал к ней Telegram. Незнакомый Telegram-аккаунт получит отказ, даже если провайдер настроен.
</Warning>

## Шаг 1. Настройка провайдера

Настройка выполняется один раз на всю установку.

<Steps>
  <Step title="Откройте раздел аутентификации">
    Перейдите в **Настройки → Аутентификация**. Здесь настраивается именно вход через Telegram — не путайте с разделом **Настройки → Telegram**, где живёт бот уведомлений панели.
  </Step>

  <Step title="Скопируйте Callback URL">
    В карточке **Вход через Telegram** есть поле **Callback URL** с кнопкой «Копировать». Этот адрес нужно будет указать в BotFather.
  </Step>

  <Step title="Создайте Login-приложение в BotFather">
    Откройте [@BotFather](https://t.me/BotFather), создайте приложение для входа, укажите домен панели и скопированный Callback URL. BotFather выдаст **Client ID** и **Client Secret**.
  </Step>

  <Step title="Заполните поля в панели">
    Вставьте Client ID и Client Secret, включите переключатель **Включить вход через Telegram** и нажмите **Сохранить**.
  </Step>
</Steps>

После сохранения на экранах входа появится кнопка **Войти через Telegram**. Пока провайдер выключен или заполнен не полностью, кнопка не показывается.

<Note>
  Client Secret хранится в защищённом хранилище секретов и никогда не возвращается через API. При повторном редактировании оставьте поле пустым, чтобы сохранить текущий секрет.
</Note>

## Шаг 2. Привязка Telegram к учётной записи

Пока к учётной записи не привязан Telegram, войти через него нельзя. Есть три способа привязки.

### Свой аккаунт

<Steps>
  <Step title="Откройте учётные записи">
    Перейдите в **Настройки → Учётные записи**.
  </Step>

  <Step title="Привяжите Telegram">
    В карточке **Вход через Telegram** нажмите **Привязать Telegram**.
  </Step>

  <Step title="Подтвердите в Telegram">
    Вы будете перенаправлены в Telegram. После подтверждения панель вернёт вас обратно и покажет «Telegram привязан».
  </Step>
</Steps>

<Warning>
  Для защищённого суперпользователя привязка и отвязка требуют повторного ввода пароля (и кода 2FA, если он включён) — этого нельзя сделать «по инерции» из уже открытой сессии.
</Warning>

### Новый пользователь сразу с Telegram

В мастере **Добавить пользователя** (см. [Учётные записи и вход](/ru/panel/access-and-sessions)) заполните поле **Telegram User ID**. Пароль при этом можно не задавать — тогда пользователь будет входить только через Telegram.

### Оператор поддержки из Telegram

В разделе **Поддержка → Операторы** оператора можно добавить по Telegram-нику или ID. Панель создаёт полноценного пользователя Axottle с привязанным Telegram и ролью поддержки — отдельной «безаккаунтной» сущности больше нет. Подробнее: [Операторы и роли](/ru/support/operators).

## Как выглядит вход

1. На экране входа нажмите **Войти через Telegram**.
2. Подтвердите вход в Telegram.
3. Панель проверит ответ Telegram на своей стороне и откроет сессию.

Тот же порядок работает на портале поддержки (`/support-panel`).

## Отвязка Telegram

В карточке **Вход через Telegram** нажмите **Отвязать Telegram**.

<Note>
  Убрать единственный способ входа нельзя. Если у пользователя нет пароля, панель откажет в отвязке — сначала задайте пароль.
</Note>

## Диагностика

Если вход не удался, панель возвращает на экран входа и показывает причину. Полное сообщение дублируется в логах панели.

| Что показано                                               | Причина                                                                            | Что делать                                                               |
| ---------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| Сессия входа истекла или не совпала                        | Прошло больше 10 минут, панель перезапускалась, либо не вернулась служебная cookie | Повторите вход. Если повторяется — сверьте Callback URL с адресом панели |
| Telegram не подтвердил код авторизации                     | Не совпадают Client ID, Client Secret или Callback URL                             | Проверьте все три поля в **Настройки → Аутентификация**                  |
| Этот Telegram-аккаунт не привязан ни к одному пользователю | Вход пытается выполнить непривязанный аккаунт                                      | Создайте пользователя и привяжите к нему Telegram                        |
| Этот Telegram-аккаунт уже привязан к другому пользователю  | Один Telegram — один пользователь                                                  | Отвяжите Telegram у прежнего пользователя или используйте другой аккаунт |
| Учётная запись отключена                                   | Пользователь в статусе «Отключён»                                                  | Включите учётную запись в списке пользователей                           |
| Вход через Telegram не настроен                            | Провайдер выключен или заполнен не полностью                                       | Завершите настройку провайдера                                           |

Логи панели по попыткам входа:

```bash theme={null}
journalctl -u axottle --since "10 min ago" | grep -i telegram
```

<Tip>
  Самая частая причина — Callback URL, который не совпадает с адресом панели по хосту или схеме. Он должен быть ровно таким, как показано в **Настройки → Аутентификация**.
</Tip>

## Что происходит под капотом

* Используется Authorization Code Flow с PKCE: код авторизации меняется на токен на стороне сервера, в браузер он не попадает.
* Ответ Telegram проверяется по подписи (JWKS), издателю, получателю, сроку действия и одноразовому `nonce`.
* Служебные значения `state` и `PKCE verifier` одноразовые и живут 10 минут.
* Сессия выдаётся в виде `HttpOnly` cookie — токен недоступен из JavaScript.

Подробнее о защите входа: [Защита входа](/ru/security/authentication).

## Проверка

<Check>
  Кнопка **Войти через Telegram** видна на экране входа, привязанный пользователь входит без пароля, а непривязанный Telegram-аккаунт получает отказ с понятным сообщением.
</Check>

## Откат

* Выключите переключатель в **Настройки → Аутентификация** — кнопка входа исчезнет, привязки сохранятся.
* Отвязать Telegram у конкретного пользователя можно в его карточке (если у него есть пароль).

<Note>Актуальность: 24 июля 2026.</Note>
