2025-10-24 16:19:58 +03:00
|
|
|
"""
|
|
|
|
|
SMS API Routes
|
|
|
|
|
"""
|
|
|
|
|
from fastapi import APIRouter, HTTPException
|
|
|
|
|
from ..services.sms_service import sms_service
|
|
|
|
|
from .models import SMSSendRequest, SMSVerifyRequest
|
|
|
|
|
|
|
|
|
|
router = APIRouter(prefix="/api/v1/sms", tags=["SMS"])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/send")
|
|
|
|
|
async def send_sms_code(request: SMSSendRequest):
|
|
|
|
|
"""
|
|
|
|
|
Отправить SMS код верификации
|
|
|
|
|
|
|
|
|
|
- **phone**: Номер телефона в формате +79001234567
|
|
|
|
|
"""
|
|
|
|
|
code = await sms_service.send_verification_code(request.phone)
|
|
|
|
|
|
|
|
|
|
if code:
|
|
|
|
|
return {
|
|
|
|
|
"success": True,
|
|
|
|
|
"message": "Код отправлен на указанный номер",
|
2026-01-02 17:37:37 +03:00
|
|
|
"debug_code": code # Всегда возвращаем код для dev модалки
|
2025-10-24 16:19:58 +03:00
|
|
|
}
|
|
|
|
|
else:
|
|
|
|
|
raise HTTPException(
|
|
|
|
|
status_code=429,
|
|
|
|
|
detail="Слишком много запросов. Попробуйте через минуту."
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/verify")
|
|
|
|
|
async def verify_sms_code(request: SMSVerifyRequest):
|
|
|
|
|
"""
|
|
|
|
|
Проверить SMS код
|
|
|
|
|
|
|
|
|
|
- **phone**: Номер телефона
|
|
|
|
|
- **code**: 6-значный код из SMS
|
|
|
|
|
"""
|
|
|
|
|
is_valid = await sms_service.verify_code(request.phone, request.code)
|
|
|
|
|
|
|
|
|
|
if is_valid:
|
|
|
|
|
return {
|
|
|
|
|
"success": True,
|
|
|
|
|
"message": "Код подтвержден"
|
|
|
|
|
}
|
|
|
|
|
else:
|
|
|
|
|
raise HTTPException(
|
|
|
|
|
status_code=400,
|
|
|
|
|
detail="Неверный код или код истек"
|
|
|
|
|
)
|
|
|
|
|
|