refac
This commit is contained in:
@@ -530,10 +530,6 @@ async def get_channel_members_by_id(
|
||||
|
||||
if query:
|
||||
filter['query'] = query
|
||||
if order_by:
|
||||
filter['order_by'] = order_by
|
||||
if direction:
|
||||
filter['direction'] = direction
|
||||
|
||||
if channel.type == 'group':
|
||||
filter['channel_id'] = channel.id
|
||||
@@ -544,7 +540,13 @@ async def get_channel_members_by_id(
|
||||
filter['user_ids'] = permitted_ids.get('user_ids')
|
||||
filter['group_ids'] = permitted_ids.get('group_ids')
|
||||
|
||||
result = await Users.get_users(filter=filter, skip=skip, limit=limit, db=db)
|
||||
result = await Users.get_users(
|
||||
filter=filter,
|
||||
sort={'order_by': order_by, 'direction': direction},
|
||||
skip=skip,
|
||||
limit=limit,
|
||||
db=db,
|
||||
)
|
||||
|
||||
fetched_users = result['users']
|
||||
total = result['total']
|
||||
|
||||
@@ -517,20 +517,30 @@ async def get_users(
|
||||
# Simple filter parsing - supports userName eq, externalId eq
|
||||
if 'userName eq' in filter:
|
||||
email = filter.split('"')[1]
|
||||
user = await Users.get_user_by_email(email, db=db)
|
||||
users_list = [user] if user else []
|
||||
total = 1 if user else 0
|
||||
response = await Users.get_scim_users(filter={'email': email}, limit=1, db=db)
|
||||
users_list = response['users']
|
||||
total = response['total']
|
||||
elif 'externalId eq' in filter:
|
||||
external_id = filter.split('"')[1]
|
||||
user = await find_user_by_external_id(external_id, db=db)
|
||||
users_list = [user] if user else []
|
||||
total = 1 if user else 0
|
||||
else:
|
||||
response = await Users.get_users(skip=skip, limit=limit, db=db)
|
||||
response = await Users.get_scim_users(
|
||||
sort={'order_by': 'created_at'},
|
||||
skip=skip,
|
||||
limit=limit,
|
||||
db=db,
|
||||
)
|
||||
users_list = response['users']
|
||||
total = response['total']
|
||||
else:
|
||||
response = await Users.get_users(skip=skip, limit=limit, db=db)
|
||||
response = await Users.get_scim_users(
|
||||
sort={'order_by': 'created_at'},
|
||||
skip=skip,
|
||||
limit=limit,
|
||||
db=db,
|
||||
)
|
||||
users_list = response['users']
|
||||
total = response['total']
|
||||
|
||||
@@ -553,7 +563,7 @@ async def get_user(
|
||||
db: AsyncSession = Depends(get_async_session),
|
||||
):
|
||||
"""Get SCIM User by ID"""
|
||||
user = await Users.get_user_by_id(user_id, db=db)
|
||||
user = await Users.get_scim_user_by_id(user_id, db=db)
|
||||
if not user:
|
||||
return scim_error(status_code=status.HTTP_404_NOT_FOUND, detail=f'User {user_id} not found')
|
||||
|
||||
@@ -624,11 +634,12 @@ async def create_user(
|
||||
detail='Failed to create user',
|
||||
)
|
||||
|
||||
# Store externalId in the scim field
|
||||
if user_data.externalId:
|
||||
provider = get_scim_provider()
|
||||
await Users.update_user_scim_by_id(user_id, provider, user_data.externalId, db=db)
|
||||
new_user = await Users.get_user_by_id(user_id, db=db)
|
||||
new_user = await Users.update_user_scim_by_id(user_id, get_scim_provider(), user_data.externalId, db=db)
|
||||
if not new_user:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
detail='Failed to stamp SCIM user',
|
||||
)
|
||||
|
||||
await publish_event(
|
||||
request,
|
||||
@@ -654,7 +665,7 @@ async def update_user(
|
||||
db: AsyncSession = Depends(get_async_session),
|
||||
):
|
||||
"""Update SCIM User (full update)"""
|
||||
user = await Users.get_user_by_id(user_id, db=db)
|
||||
user = await Users.get_scim_user_by_id(user_id, db=db)
|
||||
if not user:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
@@ -734,7 +745,7 @@ async def patch_user(
|
||||
db: AsyncSession = Depends(get_async_session),
|
||||
):
|
||||
"""Update SCIM User (partial update)"""
|
||||
user = await Users.get_user_by_id(user_id, db=db)
|
||||
user = await Users.get_scim_user_by_id(user_id, db=db)
|
||||
if not user:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
@@ -808,7 +819,7 @@ async def delete_user(
|
||||
db: AsyncSession = Depends(get_async_session),
|
||||
):
|
||||
"""Delete SCIM User"""
|
||||
user = await Users.get_user_by_id(user_id, db=db)
|
||||
user = await Users.get_scim_user_by_id(user_id, db=db)
|
||||
if not user:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
|
||||
@@ -112,14 +112,14 @@ async def get_users(
|
||||
filter = {}
|
||||
if query:
|
||||
filter['query'] = query
|
||||
if order_by:
|
||||
filter['order_by'] = order_by
|
||||
if direction:
|
||||
filter['direction'] = direction
|
||||
|
||||
filter['direction'] = direction
|
||||
|
||||
result = await Users.get_users(filter=filter, skip=skip, limit=limit, db=db)
|
||||
result = await Users.get_users(
|
||||
filter=filter,
|
||||
sort={'order_by': order_by, 'direction': direction},
|
||||
skip=skip,
|
||||
limit=limit,
|
||||
db=db,
|
||||
)
|
||||
|
||||
users = result['users']
|
||||
total = result['total']
|
||||
@@ -167,12 +167,14 @@ async def search_users(
|
||||
filter = {}
|
||||
if query:
|
||||
filter['query'] = query
|
||||
if order_by:
|
||||
filter['order_by'] = order_by
|
||||
if direction:
|
||||
filter['direction'] = direction
|
||||
|
||||
return await Users.get_users(filter=filter, skip=skip, limit=limit, db=db)
|
||||
return await Users.get_users(
|
||||
filter=filter,
|
||||
sort={'order_by': order_by, 'direction': direction},
|
||||
skip=skip,
|
||||
limit=limit,
|
||||
db=db,
|
||||
)
|
||||
|
||||
|
||||
############################
|
||||
|
||||
Reference in New Issue
Block a user