@@ -580,7 +580,7 @@ async def update_user_by_id(
580580 detail = ERROR_MESSAGES .ACTION_PROHIBITED ,
581581 )
582582
583- if form_data .role != 'admin' :
583+ if form_data .role is not None and form_data . role != 'admin' :
584584 # If the primary admin is trying to change their own role, prevent it
585585 raise HTTPException (
586586 status_code = status .HTTP_403_FORBIDDEN ,
@@ -597,7 +597,7 @@ async def update_user_by_id(
597597 user = await Users .get_user_by_id (user_id , db = db )
598598
599599 if user :
600- if form_data .email .lower () != user .email :
600+ if form_data .email is not None and form_data . email .lower () != user .email :
601601 email_user = await Users .get_user_by_email (form_data .email .lower (), db = db )
602602 if email_user :
603603 raise HTTPException (
@@ -614,17 +614,26 @@ async def update_user_by_id(
614614 hashed = get_password_hash (form_data .password )
615615 await Auths .update_user_password_by_id (user_id , hashed , db = db )
616616
617- await Auths .update_email_by_id (user_id , form_data .email .lower (), db = db )
618- updated_user = await Users .update_user_by_id (
619- user_id ,
620- {
621- 'role' : form_data .role ,
622- 'name' : form_data .name ,
623- 'email' : form_data .email .lower (),
624- 'profile_image_url' : form_data .profile_image_url ,
625- },
626- db = db ,
627- )
617+ # Build update dict from only the provided fields
618+ update_data = {}
619+ if form_data .role is not None :
620+ update_data ['role' ] = form_data .role
621+ if form_data .name is not None :
622+ update_data ['name' ] = form_data .name
623+ if form_data .email is not None :
624+ update_data ['email' ] = form_data .email .lower ()
625+ await Auths .update_email_by_id (user_id , form_data .email .lower (), db = db )
626+ if form_data .profile_image_url is not None :
627+ update_data ['profile_image_url' ] = form_data .profile_image_url
628+
629+ if update_data :
630+ updated_user = await Users .update_user_by_id (
631+ user_id ,
632+ update_data ,
633+ db = db ,
634+ )
635+ else :
636+ updated_user = user
628637
629638 if updated_user :
630639 # If the role changed, disconnect all socket sessions so stale
0 commit comments