Skip to content

Commit

Permalink
update: retrieve user info
Browse files Browse the repository at this point in the history
  • Loading branch information
flavien-hugs committed Nov 22, 2024
1 parent 51d6ecc commit dbf816d
Showing 1 changed file with 27 additions and 13 deletions.
40 changes: 27 additions & 13 deletions src/routers/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from src.middleware import AuthorizedHTTPBearer, CheckPermissionsHandler, CheckUserAccessHandler
from src.models import User, UserOut
from src.schemas import CreateUser, UpdatePassword, UpdateUser
from src.services import files, users
from src.services import files, roles, users
from src.shared.utils import AccountAction, customize_page, get_fs, SortEnum

user_router = APIRouter(prefix="/users", tags=["USERS"], redirect_slashes=False)
Expand Down Expand Up @@ -48,7 +48,7 @@ async def create_user(request: Request, payload: CreateUser = Body(...)):

@user_router.get(
"",
response_model=customize_page(User),
response_model=customize_page(UserOut),
dependencies=[
Depends(AuthorizedHTTPBearer),
Depends(CheckPermissionsHandler(required_permissions={"auth:can-display-user"})),
Expand Down Expand Up @@ -96,16 +96,21 @@ async def listing_users(

sorted = DESCENDING if sorting == SortEnum.DESC else ASCENDING
users_list = await User.find(search, sort=[("created_at", sorted)]).to_list()
users = [
user.model_dump(
by_alias=True,
mode="json",
exclude={"password", "is_primary", "attributes.otp_secret", "attributes.otp_created_at"},
)
for user in users_list
if user.is_primary is False
]
return await paginate(users)
users_output = []
for user in users_list:
if user.is_primary is False:
role_data = await roles.get_one_role(role_id=user.role)
users_output.append(
UserOut(
**user.model_dump(
by_alias=True,
mode="json",
exclude={"password", "is_primary", "attributes.otp_secret", "attributes.otp_created_at"},
),
extras={"role_info": {"name": role_data.name, "slug": role_data.slug} if role_data else None}
)
)
return await paginate(users_output)


@user_router.get(
Expand All @@ -128,7 +133,16 @@ async def listing_users(
include_in_schema=False,
)
async def get_user(id: PydanticObjectId):
result = await users.get_one_user(user_id=PydanticObjectId(id))
user_data = await users.get_one_user(user_id=PydanticObjectId(id))
role_data = await roles.get_one_role(role_id=user_data.role)
result = UserOut(
**user_data.model_dump(
by_alias=True,
mode="json",
exclude={"password", "is_primary", "attributes.otp_secret", "attributes.otp_created_at"},
),
extras={"role_info": {"name": role_data.name, "slug": role_data.slug} if role_data else None}
)
return result


Expand Down

0 comments on commit dbf816d

Please sign in to comment.