34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""User management endpoints."""
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from app.core.database import get_db
|
|
from app.core.security import get_password_hash
|
|
from app.models.user import User
|
|
from app.schemas.user import UserRead, UserUpdate
|
|
from app.api.deps import get_current_user
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/me", response_model=UserRead)
|
|
async def get_me(user: User = Depends(get_current_user)):
|
|
"""Get current user profile."""
|
|
return user
|
|
|
|
@router.patch("/me", response_model=UserRead)
|
|
async def update_me(
|
|
user_update: UserUpdate,
|
|
user: User = Depends(get_current_user),
|
|
db: AsyncSession = Depends(get_db)
|
|
):
|
|
"""Update current user profile."""
|
|
if user_update.email:
|
|
user.email = user_update.email
|
|
if user_update.full_name:
|
|
user.full_name = user_update.full_name
|
|
if user_update.avatar_url:
|
|
user.avatar_url = user_update.avatar_url
|
|
if user_update.password:
|
|
user.hashed_password = get_password_hash(user_update.password)
|
|
|
|
return user
|