test qr code
This commit is contained in:
@ -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")
|
||||
|
||||
Reference in New Issue
Block a user