From 69a482df9f70a3218679c3165e48eec2c1870c18 Mon Sep 17 00:00:00 2001 From: lian Date: Fri, 13 Dec 2019 21:44:54 +0800 Subject: [PATCH] only check local user when login via shib (#4357) --- thirdpart/shibboleth/backends.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/thirdpart/shibboleth/backends.py b/thirdpart/shibboleth/backends.py index 1f16fdf1b2..67cec514e9 100644 --- a/thirdpart/shibboleth/backends.py +++ b/thirdpart/shibboleth/backends.py @@ -1,6 +1,7 @@ from django.conf import settings from django.db import connection +from seaserv import ccnet_api from seahub.auth.backends import RemoteUserBackend from seahub.base.accounts import User from registration.models import ( @@ -43,9 +44,12 @@ class ShibbolethRemoteUserBackend(RemoteUserBackend): return username = self.clean_username(remote_user) - try: - user = User.objects.get(email=username) - except User.DoesNotExist: + + local_ccnet_users = ccnet_api.search_emailusers('DB', username, -1, -1) + if not local_ccnet_users: + local_ccnet_users = ccnet_api.search_emailusers('LDAP', username, -1, -1) + + if not local_ccnet_users: if self.create_unknown_user: user = User.objects.create_user( email=username, is_active=self.activate_after_creation)