|
@@ -1,4 +1,4 @@
|
|
|
-from fastapi import APIRouter, Request, Depends, HTTPException, WebSocket, WebSocketDisconnect, Query, Body
|
|
|
|
|
|
|
+from fastapi import APIRouter, Request, Depends, HTTPException, BackgroundTasks, WebSocket, WebSocketDisconnect, Query, Body
|
|
|
from typing import Optional, List
|
|
from typing import Optional, List
|
|
|
from services.global_manager import global_manager
|
|
from services.global_manager import global_manager
|
|
|
from services.rate_limit_service import rate_limit_service
|
|
from services.rate_limit_service import rate_limit_service
|
|
@@ -26,7 +26,7 @@ except ImportError:
|
|
|
router = APIRouter(prefix="/auth", tags=["auth"])
|
|
router = APIRouter(prefix="/auth", tags=["auth"])
|
|
|
|
|
|
|
|
@router.post("/register", response_model=schemas.UserResponse)
|
|
@router.post("/register", response_model=schemas.UserResponse)
|
|
|
-async def register(user: schemas.UserCreate, lang: str = "en"):
|
|
|
|
|
|
|
+async def register(request: Request, user: schemas.UserCreate, lang: str = "en"):
|
|
|
existing_user = db.execute_query("SELECT id FROM users WHERE email = %s", (user.email,))
|
|
existing_user = db.execute_query("SELECT id FROM users WHERE email = %s", (user.email,))
|
|
|
if existing_user:
|
|
if existing_user:
|
|
|
raise HTTPException(status_code=400, detail=locales.translate_error("email_already_registered", lang))
|
|
raise HTTPException(status_code=400, detail=locales.translate_error("email_already_registered", lang))
|
|
@@ -71,7 +71,7 @@ async def verify_email(token: str, lang: str = "en"):
|
|
|
return {"message": "Email verified successfully. You can now log in."}
|
|
return {"message": "Email verified successfully. You can now log in."}
|
|
|
|
|
|
|
|
@router.post("/login", response_model=schemas.Token)
|
|
@router.post("/login", response_model=schemas.Token)
|
|
|
-async def login(user_data: schemas.UserLogin, lang: str = "en"):
|
|
|
|
|
|
|
+async def login(request: Request, user_data: schemas.UserLogin, lang: str = "en"):
|
|
|
ip = request.client.host if request.client else "unknown"
|
|
ip = request.client.host if request.client else "unknown"
|
|
|
email = user_data.email.lower()
|
|
email = user_data.email.lower()
|
|
|
|
|
|
|
@@ -124,7 +124,7 @@ async def login(user_data: schemas.UserLogin, lang: str = "en"):
|
|
|
return {"access_token": access_token, "token_type": "bearer"}
|
|
return {"access_token": access_token, "token_type": "bearer"}
|
|
|
|
|
|
|
|
@router.post("/social-login", response_model=schemas.Token)
|
|
@router.post("/social-login", response_model=schemas.Token)
|
|
|
-async def social_login(data: schemas.SocialLogin):
|
|
|
|
|
|
|
+async def social_login(request: Request, data: schemas.SocialLogin):
|
|
|
email = data.email.lower() if data.email else None
|
|
email = data.email.lower() if data.email else None
|
|
|
first_name = data.first_name
|
|
first_name = data.first_name
|
|
|
last_name = data.last_name
|
|
last_name = data.last_name
|