test qr code

This commit is contained in:
2025-12-20 15:48:15 +05:00
parent 41711d68c8
commit e035334417
4 changed files with 124 additions and 2 deletions

View File

@ -1,6 +1,9 @@
import os
import secrets
from fastapi import APIRouter, HTTPException, Body, Response
from fastapi.params import Query
from app.models.user import UserCreate, UserLogin, VerifyCode
from app import db
from app.models.user import QrApprove, UserCreate, UserLogin, VerifyCode
from app.models.request import ValidateRequest
from app.services.auth import AuthService
from app.db.database import users_collection, sessions_collection
@ -16,6 +19,8 @@ from app.services.dailyquests import DailyQuestsService
coins_service = CoinsService()
qr_logins_collection = db["qr_logins"]
router = APIRouter(
tags=["Users"]
)
@ -148,6 +153,33 @@ async def get_me(
"""
return await AuthService().get_current_user(accessToken, clientToken)
@router.post("/auth/qr/init")
async def qr_init(device_id: str | None = Query(default=None)):
token = secrets.token_urlsafe(24)
expires_at = datetime.utcnow() + timedelta(minutes=2)
await qr_logins_collection.insert_one({
"token": token,
"device_id": device_id,
"status": "pending",
"approved_username": None,
"created_at": datetime.utcnow(),
"expires_at": expires_at,
})
# deep-link в бота
BOT_USERNAME = os.getenv("TELEGRAM_BOT_USERNAME")
qr_url = f"https://t.me/{BOT_USERNAME}?start=qr_{token}"
return {"token": token, "qr_url": qr_url, "expires_at": expires_at.isoformat()}
@router.post("/auth/qr/approve")
async def qr_approve(payload: QrApprove):
return await AuthService().approve_qr_login(payload.token, payload.telegram_user_id)
@router.get("/auth/qr/status")
async def qr_status(token: str = Query(...), device_id: str | None = Query(default=None)):
return await AuthService().qr_status(token, device_id)
### daily reward
@router.post("/users/daily/claim")