diff --git a/endpoints/countries.get.py b/endpoints/countries.get.py index e69de29..a8ab4aa 100644 --- a/endpoints/countries.get.py +++ b/endpoints/countries.get.py @@ -0,0 +1,37 @@ +from fastapi import APIRouter, Depends, HTTPException +from pydantic import BaseModel +from datetime import timedelta +from core.database import get_db +from sqlalchemy.orm import Session +from core.auth import verify_password, create_access_token +from models.user import User + +router = APIRouter() + +class UserAuth(BaseModel): + username: str + password: str + +@router.post("/login") +async def login( + user_data: UserAuth, + db: Session = Depends(get_db) +): + """User authentication endpoint""" + user = db.query(User).filter(User.username == user_data.username).first() + + if not user or not verify_password(user_data.password, user.hashed_password): + raise HTTPException(status_code=400, detail="Invalid credentials") + + # Generate token with expiration + access_token = create_access_token( + data={"sub": user.id}, + expires_delta=timedelta(hours=1) + ) + + return { + "access_token": access_token, + "token_type": "bearer", + "user_id": user.id, + "username": user.username + }