"""Постоянный роутер аутентификации: конфиг, Telegram-вход, выход. Stub-вход (по нику) физически вынесен в routers/dev_auth.py и доступен только в dev. """ from __future__ import annotations from fastapi import APIRouter, Depends, Request, Response from sqlmodel import Session from app.auth.login import login_with_identity from app.auth.registry import enabled_methods from app.auth.telegram import TelegramProvider from app.core import security from app.core.config import settings from app.db.session import get_session from app.routers.users import build_me from app.schemas import api as s router = APIRouter(prefix="/auth", tags=["auth"]) @router.get("/config", response_model=s.AuthConfig) def auth_config() -> s.AuthConfig: return s.AuthConfig( methods=enabled_methods(), telegram_bot_username=settings.telegram_bot_username, ) @router.post("/telegram", response_model=s.MeRead) def telegram_login( body: s.TelegramAuthPayload, request: Request, response: Response, session: Session = Depends(get_session), ) -> s.MeRead: identity = TelegramProvider().authenticate(body.model_dump()) user = login_with_identity(session, response, request, identity) return build_me(session, user) @router.post("/logout", response_model=s.OkResponse) def logout(response: Response) -> s.OkResponse: security.clear_user_session(response) return s.OkResponse()