From f6611d265b4830be78a2bc4be36ac0bba9de9ed1 Mon Sep 17 00:00:00 2001 From: Backend IM Bot Date: Wed, 26 Mar 2025 21:51:32 +0000 Subject: [PATCH] feat: Update endpoint countries --- endpoints/countries.get.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) 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 + }