diff --git a/seahub/adfs_auth/backends.py b/seahub/adfs_auth/backends.py index 104cb4f77a..3d781e71f9 100644 --- a/seahub/adfs_auth/backends.py +++ b/seahub/adfs_auth/backends.py @@ -32,11 +32,17 @@ from registration.models import notify_admins_on_activate_request, notify_admins logger = logging.getLogger(__name__) -SAML_PROVIDER_IDENTIFIER = getattr(settings, 'SAML_PROVIDER_IDENTIFIER', '') +SAML_PROVIDER_IDENTIFIER = getattr(settings, 'SAML_PROVIDER_IDENTIFIER', 'saml') SHIBBOLETH_AFFILIATION_ROLE_MAP = getattr(settings, 'SHIBBOLETH_AFFILIATION_ROLE_MAP', False) class Saml2Backend(ModelBackend): + def get_user(self, username): + try: + user = User.objects.get(email=username) + except User.DoesNotExist: + user = None + return user def authenticate(self, session_info=None, attribute_mapping=None, create_unknown_user=True, **kwargs): if session_info is None or attribute_mapping is None: @@ -59,10 +65,7 @@ class Saml2Backend(ModelBackend): saml_user = SocialAuthUser.objects.get_by_provider_and_uid(SAML_PROVIDER_IDENTIFIER, name_id) if saml_user: - try: - user = User.objects.get(email=saml_user.username) - except User.DoesNotExist: - user = None + user = self.get_user(saml_user.username) if not user: # Means found user in social_auth_usersocialauth but not found user in EmailUser, # delete it and recreate one. diff --git a/seahub/adfs_auth/utils.py b/seahub/adfs_auth/utils.py index f0615005d6..2ba6738a71 100644 --- a/seahub/adfs_auth/utils.py +++ b/seahub/adfs_auth/utils.py @@ -24,7 +24,7 @@ if ENABLE_ADFS_LOGIN or ENABLE_MULTI_ADFS: XMLSEC_BINARY_PATH = getattr(settings, 'SAML_XMLSEC_BINARY_PATH', '/usr/bin/xmlsec1') CERTS_DIR = getattr(settings, 'SAML_CERTS_DIR', '/opt/seafile/seahub-data/certs') SAML_ATTRIBUTE_MAPPING = getattr(settings, 'SAML_ATTRIBUTE_MAPPING', {}) - SAML_PROVIDER_IDENTIFIER = getattr(settings, 'SAML_PROVIDER_IDENTIFIER', '') + SAML_PROVIDER_IDENTIFIER = getattr(settings, 'SAML_PROVIDER_IDENTIFIER', 'saml') def settings_check(func):