Initial commit: AuroraMusic monorepo
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .. import auth, schemas
|
||||
from ..database import get_db
|
||||
from ..models import User
|
||||
|
||||
router = APIRouter(prefix="/auth", tags=["auth"])
|
||||
|
||||
|
||||
@router.post("/signup", response_model=schemas.TokenResponse, status_code=status.HTTP_201_CREATED)
|
||||
def signup(payload: schemas.SignupRequest, db: Session = Depends(get_db)):
|
||||
existing = db.query(User).filter(User.email == payload.email.lower()).first()
|
||||
if existing:
|
||||
raise HTTPException(status_code=status.HTTP_409_CONFLICT, detail="Email already registered")
|
||||
|
||||
user = User(
|
||||
email=payload.email.lower(),
|
||||
hashed_password=auth.hash_password(payload.password),
|
||||
display_name=payload.display_name,
|
||||
)
|
||||
db.add(user)
|
||||
db.commit()
|
||||
db.refresh(user)
|
||||
|
||||
token = auth.create_access_token(user.id)
|
||||
return schemas.TokenResponse(access_token=token)
|
||||
|
||||
|
||||
@router.post("/login", response_model=schemas.TokenResponse)
|
||||
def login(payload: schemas.LoginRequest, db: Session = Depends(get_db)):
|
||||
user = db.query(User).filter(User.email == payload.email.lower()).first()
|
||||
if not user or not auth.verify_password(payload.password, user.hashed_password):
|
||||
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid email or password")
|
||||
|
||||
token = auth.create_access_token(user.id)
|
||||
return schemas.TokenResponse(access_token=token)
|
||||
|
||||
|
||||
@router.get("/me", response_model=schemas.UserOut)
|
||||
def me(current_user: User = Depends(auth.get_current_user)):
|
||||
return current_user
|
||||
Reference in New Issue
Block a user