feat: user init & refactors

This commit is contained in:
swve 2023-11-12 23:16:34 +01:00
parent b4dcc14749
commit a50fc67104
25 changed files with 356 additions and 358 deletions

View file

@ -1,10 +1,24 @@
from fastapi import Depends, APIRouter, Request
from fastapi import APIRouter, Depends, Request
from sqlmodel import Session
from src.security.auth import get_current_user
from src.services.users.schemas.users import PasswordChangeForm, PublicUser, User, UserWithPassword
from src.services.users.users import create_user, delete_user, get_profile_metadata, get_user_by_userid, update_user, update_user_password
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()
@ -17,50 +31,95 @@ async def api_get_current_user(current_user: User = Depends(get_current_user)):
"""
return current_user.dict()
@router.get("/profile_metadata")
async def api_get_current_user_metadata(request: Request,current_user: User = Depends(get_current_user)):
@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:
"""
Get current user
Create User with Org ID
"""
return await get_profile_metadata(request , current_user.dict())
return await create_user(request, db_session, None, user_object, org_id)
@router.get("/user_id/{user_id}")
async def api_get_user_by_userid(request: Request,user_id: str):
@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:
"""
Get single user by user_id
Create User
"""
return await get_user_by_userid(request, user_id)
return await create_user_without_org(request, db_session, None, user_object)
@router.post("/")
async def api_create_user(request: Request,user_object: UserWithPassword, org_slug: str ):
@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:
"""
Create new user
Get User by ID
"""
return await create_user(request, None, user_object, org_slug)
return await read_user_by_id(request, db_session, None, user_id)
@router.delete("/user_id/{user_id}")
async def api_delete_user(request: Request, user_id: str, current_user: PublicUser = Depends(get_current_user)):
@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:
"""
Delete user by ID
Get User by UUID
"""
return await delete_user(request, current_user, user_id)
return await read_user_by_uuid(request, db_session, None, user_uuid)
@router.put("/user_id/{user_id}")
async def api_update_user(request: Request, user_object: User, user_id: str, current_user: PublicUser = Depends(get_current_user)):
@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 by ID
Update User
"""
return await update_user(request, user_id, user_object, current_user)
return await update_user(request, db_session, None, user_object)
@router.put("/password/user_id/{user_id}")
async def api_update_user_password(request: Request, user_id: str , passwordChangeForm : PasswordChangeForm, current_user: PublicUser = Depends(get_current_user)):
@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 by ID
Update User Password
"""
return await update_user_password(request,current_user, user_id, passwordChangeForm)
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)