Роутер auth отвечает за регистрацию, авторизацию, двухфакторную аутентификацию, сброс пароля и подтверждение email.
OAuth-подключения (Discord, VK, Telegram, Google, Yandex) обрабатываются отдельным роутером connections, а не auth.
Путь: trpc.auth.*

Процедуры

register

Регистрация нового пользователя.
  • Тип: mutation
  • Доступ: publicProcedure
Входные данные:
username
string
required
Имя пользователя (3–50 символов)
email
string
required
Email-адрес
password
string
required
Пароль (минимум 6 символов)
avatar
string
URL аватара (опционально)
skin
string
URL скина (опционально)
cape
string
URL плаща (опционально)
extra
object
Дополнительные данные. Поддерживает referralCode (1–64 символа, шаблон [A-Za-z0-9_-]+) для привязки реферала.
Ответ:
id
number
ID созданного пользователя
success
boolean
Успешность операции
requiresEmailVerification
boolean
Требуется ли подтверждение email (зависит от настройки security.require_email_verification)
Ошибки:
  • CONFLICT — пользователь с таким email или именем уже существует
  • TOO_MANY_REQUESTS — превышен лимит регистраций (5 в минуту с одного IP)
  • INTERNAL_SERVER_ERROR — не удалось создать аккаунт

login

Вход по email/username и паролю.
  • Тип: mutation
  • Доступ: publicProcedure
Входные данные:
login
string
required
Email или имя пользователя
password
string
required
Пароль
totpToken
string
6-значный TOTP-код (если включена 2FA)
backupCode
string
Резервный код (альтернатива TOTP, 6–64 символа)
deviceInfo
object
Информация об устройстве: fingerprint (string), userAgent, browserName, browserVersion, osName, osVersion, deviceType (все, кроме fingerprint, могут быть null).
clientIp
string
IP клиента (используется как fallback, если контекст не определил IP)
Ответ:
token
string
Токен сессии
user
object
Объект пользователя (id, uuid, username, email, verified, avatar, skin, cape, isBanned, permissions, groups)
requiresVerification
boolean
Требуется ли верификация устройства
verificationType
string | null
Тип требуемой верификации (или null)
verificationRequestId
number | null
ID запроса верификации (или null)
verificationReasons
string[]
Причины, по которым потребовалась верификация
availableMethods
string[]
Доступные методы верификации
requiredCount
number
Сколько методов верификации нужно пройти
Ошибки:
  • UNAUTHORIZED — неверный логин/пароль или неверный код 2FA
  • FORBIDDEN — аккаунт заблокирован
  • PRECONDITION_FAILED — включена 2FA, но не передан TOTP-код и резервный код
  • TOO_MANY_REQUESTS — превышен лимит попыток входа (30 в минуту с IP / 10 в минуту на логин)

logout

Выход из системы. Удаляет текущую сессию и очищает cookie.
  • Тип: mutation
  • Доступ: protectedProcedure
Ответ:
success
boolean
Успешность операции

me

Возвращает данные текущего авторизованного пользователя.
  • Тип: query
  • Доступ: protectedProcedure
Ответ:
user
object
Объект пользователя: id, uuid, username, email, verified, avatar, skin, cape, isBanned, permissions, groups

changePassword

Смена пароля авторизованным пользователем.
  • Тип: mutation
  • Доступ: protectedProcedure
Входные данные:
oldPassword
string
required
Текущий пароль
newPassword
string
required
Новый пароль (минимум 6 символов)
Ответ:
success
boolean
Успешность операции
Ошибки:
  • UNAUTHORIZED — неверный текущий пароль
  • INTERNAL_SERVER_ERROR — пароль не найден

forgotPassword

Запрос сброса пароля. Отправляет ссылку на email. Всегда возвращает { success: true }, чтобы не раскрывать существование аккаунта.
  • Тип: mutation
  • Доступ: publicProcedure
email
string
required
Email пользователя
Ответ:
success
boolean
Всегда true

resetPassword

Установка нового пароля по токену сброса. Аннулирует все активные сессии пользователя.
  • Тип: mutation
  • Доступ: publicProcedure
token
string
required
Токен из ссылки сброса
newPassword
string
required
Новый пароль (минимум 6 символов)
Ответ:
success
boolean
Успешность операции
Ошибки:
  • BAD_REQUEST — недействительная, уже использованная или истёкшая ссылка сброса

sendVerificationEmail

Отправка кода подтверждения email текущему пользователю.
  • Тип: mutation
  • Доступ: protectedProcedure
Входные данные не требуются. Ответ:
success
boolean
Успешность операции
Ошибки:
  • BAD_REQUEST — email уже подтверждён
  • TOO_MANY_REQUESTS — повторная отправка возможна не чаще раза в минуту

verifyEmail

Подтверждение email текущего пользователя по 6-значному коду.
  • Тип: mutation
  • Доступ: protectedProcedure
code
string
required
6-значный код из письма
Ответ:
success
boolean
Успешность операции
verified
boolean
Подтверждён ли email
Ошибки:
  • BAD_REQUEST — email уже подтверждён, неверный или истёкший код
  • TOO_MANY_REQUESTS — превышен лимит попыток (5 в минуту)

resendVerificationEmail

Повторная отправка кода подтверждения email текущему пользователю.
  • Тип: mutation
  • Доступ: protectedProcedure
Входные данные не требуются. Ответ:
success
boolean
Успешность операции
Ошибки:
  • BAD_REQUEST — email уже подтверждён
  • TOO_MANY_REQUESTS — повторная отправка возможна не чаще раза в минуту