Update files
This commit is contained in:
parent
286cf1f1c8
commit
34fdbe17ba
|
|
@ -4,10 +4,8 @@ Moderation authentication routes
|
||||||
import secrets
|
import secrets
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from fastapi import APIRouter, HTTPException, status, Response, Cookie, Depends
|
from fastapi import APIRouter, HTTPException, status, Response, Cookie, Depends, Request
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
from slowapi import Limiter
|
|
||||||
from slowapi.util import get_remote_address
|
|
||||||
from bson import ObjectId
|
from bson import ObjectId
|
||||||
|
|
||||||
from models import (
|
from models import (
|
||||||
|
|
@ -27,12 +25,6 @@ from utils.email_service import send_verification_code
|
||||||
from config import settings
|
from config import settings
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
limiter = Limiter(key_func=get_remote_address)
|
|
||||||
|
|
||||||
|
|
||||||
# Rate limiters
|
|
||||||
AUTH_LIMITER = "5/15minutes" # 5 requests per 15 minutes
|
|
||||||
CODE_LIMITER = "1/minute" # 1 request per minute
|
|
||||||
|
|
||||||
|
|
||||||
def set_auth_cookies(response: Response, access_token: str, refresh_token: str):
|
def set_auth_cookies(response: Response, access_token: str, refresh_token: str):
|
||||||
|
|
@ -65,8 +57,7 @@ def clear_auth_cookies(response: Response):
|
||||||
|
|
||||||
|
|
||||||
@router.post("/send-code")
|
@router.post("/send-code")
|
||||||
@limiter.limit(CODE_LIMITER)
|
async def send_code(request: SendCodeRequest, http_request: Request = None):
|
||||||
async def send_code(request: SendCodeRequest):
|
|
||||||
"""Send verification code to email"""
|
"""Send verification code to email"""
|
||||||
try:
|
try:
|
||||||
email_lower = request.email.lower().strip()
|
email_lower = request.email.lower().strip()
|
||||||
|
|
@ -152,7 +143,6 @@ async def send_code(request: SendCodeRequest):
|
||||||
|
|
||||||
|
|
||||||
@router.post("/register")
|
@router.post("/register")
|
||||||
@limiter.limit(AUTH_LIMITER)
|
|
||||||
async def register(request: RegisterRequest, response: Response):
|
async def register(request: RegisterRequest, response: Response):
|
||||||
"""Register with email verification code"""
|
"""Register with email verification code"""
|
||||||
try:
|
try:
|
||||||
|
|
@ -256,7 +246,6 @@ async def register(request: RegisterRequest, response: Response):
|
||||||
|
|
||||||
|
|
||||||
@router.post("/login")
|
@router.post("/login")
|
||||||
@limiter.limit(AUTH_LIMITER)
|
|
||||||
async def login(request: LoginRequest, response: Response):
|
async def login(request: LoginRequest, response: Response):
|
||||||
"""Login with email and password"""
|
"""Login with email and password"""
|
||||||
try:
|
try:
|
||||||
|
|
@ -324,7 +313,6 @@ async def login(request: LoginRequest, response: Response):
|
||||||
|
|
||||||
|
|
||||||
@router.post("/telegram-widget")
|
@router.post("/telegram-widget")
|
||||||
@limiter.limit(AUTH_LIMITER)
|
|
||||||
async def telegram_widget_auth(request: TelegramWidgetAuth, response: Response):
|
async def telegram_widget_auth(request: TelegramWidgetAuth, response: Response):
|
||||||
"""Authenticate via Telegram Login Widget"""
|
"""Authenticate via Telegram Login Widget"""
|
||||||
try:
|
try:
|
||||||
|
|
@ -437,3 +425,9 @@ async def get_current_user_info(user: dict = Depends(get_current_user)):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/telegram")
|
||||||
|
async def telegram_auth_alias(request: TelegramWidgetAuth, response: Response):
|
||||||
|
"""Alias for /telegram-widget for compatibility with frontend"""
|
||||||
|
return await telegram_widget_auth(request, response)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue