From 6ad3b3adda95d615d453aa72c0a902268abc0287 Mon Sep 17 00:00:00 2001 From: l3wdfut4pwr Date: Mon, 4 May 2026 03:14:02 +0300 Subject: delete files --- app/routes/users/user.py | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'app/routes/users/user.py') diff --git a/app/routes/users/user.py b/app/routes/users/user.py index 034233e..48f7e65 100644 --- a/app/routes/users/user.py +++ b/app/routes/users/user.py @@ -1,16 +1,33 @@ from fastapi import APIRouter, Body, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession -from app.auth.dependencies import get_current_user +from app.auth.dependencies import get_current_user, get_optional_user from app.models.user import User from app.schemas.profile import DescriptionUpdate -from app.schemas.user import ChangeEmail, ChangePassword, SetPassword, UserRead +from app.schemas.user import ( + ChangeEmail, + ChangePassword, + ChangeUsername, + MeResponse, + SetPassword, + UserRead, +) from app.utils.db import get_async_session from app.utils.hash_cfg import hash_password, verify_password router = APIRouter(prefix="/users", tags=["users"]) +@router.get("/me", response_model=MeResponse) +async def me( + user: User | None = Depends(get_optional_user), +): + return MeResponse( + authenticated=user is not None, + user=UserRead.model_validate(user) if user else None, + ) + + @router.get("/{username}", response_model=UserRead) async def get_user( username: str, @@ -113,3 +130,23 @@ async def set_password( await session.refresh(user) return {"success": True} + + +@router.patch("/change-username") +async def change_username( + data: ChangeUsername, + user: User = Depends(get_current_user), + session: AsyncSession = Depends(get_async_session), +): + if len(data.username) < 3: + raise HTTPException(status_code=400, detail="Username too short") + + user.username = data.username + + await session.commit() + await session.refresh(user) + + return { + "success": True, + "username": user.username, + } -- cgit v1.3-3-g829e