feat: Implement UserProfiles

This commit is contained in:
swve 2025-03-30 22:40:01 +02:00
parent 1bbb0269a3
commit 3b5c4f9d92
14 changed files with 1729 additions and 19 deletions

View file

@ -28,6 +28,7 @@ from src.services.users.users import (
get_user_session,
read_user_by_id,
read_user_by_uuid,
read_user_by_username,
update_user,
update_user_avatar,
update_user_password,
@ -170,6 +171,20 @@ async def api_get_user_by_uuid(
return await read_user_by_uuid(request, db_session, current_user, user_uuid)
@router.get("/username/{username}", response_model=UserRead, tags=["users"])
async def api_get_user_by_username(
*,
request: Request,
db_session: Session = Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user),
username: str,
) -> UserRead:
"""
Get User by Username
"""
return await read_user_by_username(request, db_session, current_user, username)
@router.put("/{user_id}", response_model=UserRead, tags=["users"])
async def api_update_user(
*,

View file

@ -424,6 +424,30 @@ async def read_user_by_uuid(
return user
async def read_user_by_username(
request: Request,
db_session: Session,
current_user: PublicUser | AnonymousUser,
username: str,
):
# Get user
statement = select(User).where(User.username == username)
user = db_session.exec(statement).first()
if not user:
raise HTTPException(
status_code=400,
detail="User does not exist",
)
# RBAC check
await rbac_check(request, current_user, "read", user.user_uuid, db_session)
user = UserRead.model_validate(user)
return user
async def get_user_session(
request: Request,
db_session: Session,