Automated Action e7225e6443 Add Task Management System with FastAPI and SQLite
Features:
- User authentication with JWT tokens
- Task and project CRUD operations
- Task filtering and organization

generated with BackendIM... (backend.im)
2025-05-12 10:14:26 +00:00

45 lines
1.4 KiB
Python

from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
from app.database import get_db
from app.models.user import User
from app.schemas.user import UserCreate, User as UserSchema
from app.auth.password import get_password_hash
from app.auth.dependencies import get_current_active_user
router = APIRouter(
prefix="/users",
tags=["users"],
)
@router.post("/", response_model=UserSchema, status_code=status.HTTP_201_CREATED)
def create_user(user: UserCreate, db: Session = Depends(get_db)):
# Check if the username already exists
db_user_by_username = db.query(User).filter(User.username == user.username).first()
if db_user_by_username:
raise HTTPException(status_code=400, detail="Username already registered")
# Check if the email already exists
db_user_by_email = db.query(User).filter(User.email == user.email).first()
if db_user_by_email:
raise HTTPException(status_code=400, detail="Email already registered")
# Create the new user
hashed_password = get_password_hash(user.password)
db_user = User(
username=user.username,
email=user.email,
hashed_password=hashed_password
)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
@router.get("/me", response_model=UserSchema)
def read_users_me(current_user: User = Depends(get_current_active_user)):
return current_user