diff --git a/ckanext/saml2auth/views/saml2auth.py b/ckanext/saml2auth/views/saml2auth.py index 36a6c0f..126d9d6 100644 --- a/ckanext/saml2auth/views/saml2auth.py +++ b/ckanext/saml2auth/views/saml2auth.py @@ -23,7 +23,7 @@ from flask import Blueprint, session from saml2 import entity from saml2.authn_context import requested_authn_context - +from sqlalchemy.sql import func import ckan.plugins.toolkit as toolkit import ckan.model as model import ckan.plugins as plugins @@ -76,13 +76,18 @@ def _get_user_by_saml_id(saml_id): def _get_user_by_email(email): - user = model.User.by_email(email) - if user and isinstance(user, list): - user = user[0] + users = model.Session.query(model.User).filter( + func.lower(model.User.email) == func.lower(email) + ).all() - h.activate_user_if_deleted(user) + if len(users) == 0: + return None + if len(users) > 1: + raise toolkit.ValidationError(f'Multiple users with the same email found {email}') - return _dictize_user(user) if user else None + user = users[0] + h.activate_user_if_deleted(user) + return _dictize_user(user) def _update_user(user_dict):