From 1cadba71f3d17a3c4e0c629bf849d0d1878f9103 Mon Sep 17 00:00:00 2001 From: lian Date: Fri, 19 Sep 2025 09:51:47 +0800 Subject: [PATCH] login id related (#8238) 1, save login_id when oauth login 2, admin search user via login_id --- seahub/api2/endpoints/admin/users.py | 16 +++++++++++----- seahub/oauth/views.py | 5 +++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/seahub/api2/endpoints/admin/users.py b/seahub/api2/endpoints/admin/users.py index 54d143e7f5..47d24e7e1d 100644 --- a/seahub/api2/endpoints/admin/users.py +++ b/seahub/api2/endpoints/admin/users.py @@ -1041,8 +1041,11 @@ class AdminSearchUser(APIView): user.institution = user_institution_dict.get(user.email, '') # search user from profile - searched_profile = Profile.objects.filter((Q(nickname__icontains=query_str)) | \ - Q(contact_email__icontains=query_str))[:10] + searched_profile = Profile.objects.filter( + Q(nickname__icontains=query_str) | + Q(contact_email__icontains=query_str) | + Q(login_id__icontains=query_str) + )[:10] for profile in searched_profile: email = profile.user @@ -1106,9 +1109,12 @@ class AdminSearchUser(APIView): users = ccnet_users if len(all_ccnet_users) < page * per_page: - all_profile_users = Profile.objects.filter((Q(nickname__icontains=query_str)) | \ - Q(contact_email__icontains=query_str)) \ - [0:page*per_page-len(all_ccnet_users)] + + all_profile_users = Profile.objects.filter( + Q(nickname__icontains=query_str) | + Q(contact_email__icontains=query_str) | + Q(login_id__icontains=query_str) + )[:page * per_page - len(all_ccnet_users)] if int(len(all_ccnet_users)/per_page) == page-1: # need ccnet users + profile users diff --git a/seahub/oauth/views.py b/seahub/oauth/views.py index c71b9ef84e..7dbbcd2a1d 100644 --- a/seahub/oauth/views.py +++ b/seahub/oauth/views.py @@ -236,6 +236,7 @@ def oauth_callback(request): # update user's profile name = oauth_user_info.get('name', '') contact_email = oauth_user_info.get('contact_email', '') + login_id = oauth_user_info.get('login_id', '') profile = Profile.objects.get_profile_by_user(email) if not profile: @@ -249,6 +250,10 @@ def oauth_callback(request): profile.contact_email = contact_email.strip() profile.save() + if login_id: + profile.login_id = login_id.strip() + profile.save() + if CUSTOM_GET_USER_ROLE: remote_role_value = oauth_user_info.get('role', '') if remote_role_value: