Files
flowsint/flowsint-api/app/api/routes/auth.py

39 lines
1.6 KiB
Python

from fastapi import APIRouter, Depends, HTTPException
from fastapi.security import OAuth2PasswordRequestForm
from sqlalchemy.orm import Session
from flowsint_core.core.auth import verify_password
from flowsint_core.core.auth import create_access_token, get_password_hash
from sqlalchemy.orm import Session
from app.api.schemas.profile import ProfileCreate
from flowsint_core.core.models import Profile
from flowsint_core.core.postgre_db import get_db
router = APIRouter()
@router.post("/token")
def login_for_access_token(
form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)
):
user = db.query(Profile).filter(Profile.email == form_data.username).first()
if not user or not verify_password(form_data.password, user.hashed_password):
raise HTTPException(status_code=400, detail="Incorrect email or password")
access_token = create_access_token(data={"sub": user.email})
return {"access_token": access_token, "user_id": user.id, "token_type": "bearer"}
@router.post("/register", status_code=201)
def register(user: ProfileCreate, db: Session = Depends(get_db)):
print(user)
existing_user = db.query(Profile).filter(Profile.email == user.email).first()
if existing_user:
raise HTTPException(status_code=400, detail="Email already registered")
hashed_password = get_password_hash(user.password)
new_user = Profile(email=user.email, hashed_password=hashed_password)
db.add(new_user)
db.commit()
db.refresh(new_user)
return {"message": "User registered successfully", "email": new_user.email}