mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
125 lines
2.9 KiB
Python
125 lines
2.9 KiB
Python
from fastapi import APIRouter, Depends, Request
|
|
from sqlmodel import Session
|
|
from src.security.auth import get_current_user
|
|
from src.core.events.database import get_db_session
|
|
|
|
from src.db.users import (
|
|
User,
|
|
UserCreate,
|
|
UserRead,
|
|
UserUpdate,
|
|
UserUpdatePassword,
|
|
)
|
|
from src.services.users.users import (
|
|
create_user,
|
|
create_user_without_org,
|
|
delete_user_by_id,
|
|
read_user_by_id,
|
|
read_user_by_uuid,
|
|
update_user,
|
|
update_user_password,
|
|
)
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/profile")
|
|
async def api_get_current_user(current_user: User = Depends(get_current_user)):
|
|
"""
|
|
Get current user
|
|
"""
|
|
return current_user.dict()
|
|
|
|
|
|
@router.post("/org_id/{org_id}", response_model=UserRead, tags=["users"])
|
|
async def api_create_user_with_orgid(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
user_object: UserCreate,
|
|
org_id: int,
|
|
) -> UserRead:
|
|
"""
|
|
Create User with Org ID
|
|
"""
|
|
return await create_user(request, db_session, None, user_object, org_id)
|
|
|
|
|
|
@router.post("/", response_model=UserRead, tags=["users"])
|
|
async def api_create_user_without_org(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
user_object: UserCreate,
|
|
org_id: int,
|
|
) -> UserRead:
|
|
"""
|
|
Create User
|
|
"""
|
|
return await create_user_without_org(request, db_session, None, user_object)
|
|
|
|
|
|
@router.get("/user_id/{user_id}", response_model=UserRead, tags=["users"])
|
|
async def api_get_user_by_id(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
user_id: int,
|
|
) -> UserRead:
|
|
"""
|
|
Get User by ID
|
|
"""
|
|
return await read_user_by_id(request, db_session, None, user_id)
|
|
|
|
|
|
@router.get("/user_uuid/{user_uuid}", response_model=UserRead, tags=["users"])
|
|
async def api_get_user_by_uuid(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
user_uuid: str,
|
|
) -> UserRead:
|
|
"""
|
|
Get User by UUID
|
|
"""
|
|
return await read_user_by_uuid(request, db_session, None, user_uuid)
|
|
|
|
|
|
@router.put("/", response_model=UserRead, tags=["users"])
|
|
async def api_update_user(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
user_object: UserUpdate,
|
|
) -> UserRead:
|
|
"""
|
|
Update User
|
|
"""
|
|
return await update_user(request, db_session, None, user_object)
|
|
|
|
|
|
@router.put("/change_password/", response_model=UserRead, tags=["users"])
|
|
async def api_update_user_password(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
form: UserUpdatePassword,
|
|
) -> UserRead:
|
|
"""
|
|
Update User Password
|
|
"""
|
|
return await update_user_password(request, db_session, None, form)
|
|
|
|
|
|
@router.delete("/user_id/{user_id}", tags=["users"])
|
|
async def api_delete_user(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
user_id: int,
|
|
):
|
|
"""
|
|
Delete User
|
|
"""
|
|
return await delete_user_by_id(request, db_session, None, user_id)
|