38 lines
1.4 KiB
Python
Executable File
38 lines
1.4 KiB
Python
Executable File
from fastapi import APIRouter, Depends, HTTPException, Request, status, Body
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from app.db.session import get_db
|
|
from app.schemas.auth import UserRegister, Token, UserLogin
|
|
from app.services.auth_service import AuthService
|
|
from app.core.security import create_access_token
|
|
|
|
router = APIRouter()
|
|
|
|
@router.post("/register", response_model=Token, status_code=status.HTTP_201_CREATED)
|
|
async def register(
|
|
request: Request,
|
|
user_in: UserRegister = Body(...),
|
|
db: AsyncSession = Depends(get_db)
|
|
):
|
|
"""Atomi Regisztráció KYC adatokkal és privát flotta létrehozásával."""
|
|
# 1. Elérhetőség
|
|
is_available = await AuthService.check_email_availability(db, user_in.email)
|
|
if not is_available:
|
|
raise HTTPException(status_code=400, detail="Az e-mail cím már foglalt.")
|
|
|
|
# 2. Végrehajtás
|
|
user = await AuthService.register_new_user(
|
|
db=db,
|
|
user_in=user_in,
|
|
ip_address=request.client.host
|
|
)
|
|
|
|
# 3. Token generálás
|
|
token_data = {"sub": str(user.id), "email": user.email}
|
|
access_token = create_access_token(data=token_data)
|
|
|
|
return {"access_token": access_token, "token_type": "bearer"}
|
|
|
|
@router.post("/login", response_model=Token)
|
|
async def login(user_in: UserLogin = Body(...), db: AsyncSession = Depends(get_db)):
|
|
# TODO: Implement login logic
|
|
raise HTTPException(status_code=501, detail="Login not yet implemented") |