diff options
| author | l3wdfut4pwr <l3wdfut4pwr@gmail.com> | 2026-05-04 03:14:02 +0300 |
|---|---|---|
| committer | l3wdfut4pwr <l3wdfut4pwr@gmail.com> | 2026-05-04 03:14:02 +0300 |
| commit | 6ad3b3adda95d615d453aa72c0a902268abc0287 (patch) | |
| tree | da1db78cdb6ad585ebdb106f14b2cd41db29955d /app/routes | |
| parent | ea58f7b3b514098f365c50facc5fc212459acac0 (diff) | |
Diffstat (limited to 'app/routes')
| -rw-r--r-- | app/routes/__init__.py | 4 | ||||
| -rw-r--r-- | app/routes/users/changeusername.py | 40 | ||||
| -rw-r--r-- | app/routes/users/me.py | 17 | ||||
| -rw-r--r-- | app/routes/users/user.py | 41 |
4 files changed, 39 insertions, 63 deletions
diff --git a/app/routes/__init__.py b/app/routes/__init__.py index b0a55c4..03dcd6e 100644 --- a/app/routes/__init__.py +++ b/app/routes/__init__.py @@ -4,14 +4,10 @@ from app.routes.auth.auth import router as auth_router from app.routes.auth.auth_google import router as google_router from app.routes.auth.logout import router as logout_router from app.routes.auth.register import router as register_router -from app.routes.users.changeusername import router as changeusername_router -from app.routes.users.me import router as me_router from app.routes.users.user import router as user_router router = APIRouter() -router.include_router(changeusername_router) -router.include_router(me_router) router.include_router(user_router) router.include_router(google_router) router.include_router(auth_router, prefix="/auth") diff --git a/app/routes/users/changeusername.py b/app/routes/users/changeusername.py deleted file mode 100644 index 66ba8da..0000000 --- a/app/routes/users/changeusername.py +++ /dev/null @@ -1,40 +0,0 @@ -from fastapi import APIRouter, Depends, HTTPException -from pydantic import BaseModel -from sqlalchemy.ext.asyncio import AsyncSession - -from app.auth.dependencies import get_current_user -from app.models.user import User -from app.utils.db import get_async_session - -router = APIRouter() - - -class ChangeUsernameRequest(BaseModel): - username: str - - -@router.patch("/users/change-username") -async def change_username( - data: ChangeUsernameRequest, - user_info: dict = Depends(get_current_user), - session: AsyncSession = Depends(get_async_session), -): - if not user_info["authenticated"]: - raise HTTPException(status_code=401, detail="Not authenticated") - - user = user_info["user"] - - if len(data.username) < 3: - raise HTTPException(status_code=400, detail="Username too short") - - db_user = await session.get(User, user["id"]) - - if not db_user: - raise HTTPException(status_code=404, detail="User not found") - - db_user.username = data.username - - await session.commit() - await session.refresh(db_user) - - return {"success": True, "username": db_user.username} diff --git a/app/routes/users/me.py b/app/routes/users/me.py deleted file mode 100644 index a54fbfe..0000000 --- a/app/routes/users/me.py +++ /dev/null @@ -1,17 +0,0 @@ -from fastapi import APIRouter, Depends - -from app.auth.dependencies import get_optional_user -from app.models.user import User -from app.schemas.user import MeResponse, UserRead - -router = APIRouter(tags=["auth"]) - - -@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, - ) 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, + } |
