From d106f3da90cd75fb903be50442a2b42bd676209f Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 3 Feb 2021 21:21:35 +0100 Subject: [PATCH] misc: pass the authentication request to the adapter object (#50833) --- mellon/adapters.py | 3 +++ mellon/backends.py | 2 +- mellon/utils.py | 5 +++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/mellon/adapters.py b/mellon/adapters.py index 2b8a58f..66d62dd 100644 --- a/mellon/adapters.py +++ b/mellon/adapters.py @@ -58,6 +58,9 @@ def display_truncated_list(l, max_length=10): class DefaultAdapter(object): + def __init__(self, request=None): + self.request = request + def get_idp(self, entity_id): '''Find the first IdP definition matching entity_id''' for idp in self.get_idps(): diff --git a/mellon/backends.py b/mellon/backends.py index add3c49..025a2f3 100644 --- a/mellon/backends.py +++ b/mellon/backends.py @@ -34,7 +34,7 @@ class SAMLBackend(ModelBackend): if not idp: logger.debug('unknown idp %s', saml_attributes['issuer']) return None - adapters = utils.get_adapters(idp) + adapters = utils.get_adapters(idp, request=request) for adapter in adapters: if not hasattr(adapter, 'authorize'): continue diff --git a/mellon/utils.py b/mellon/utils.py index 9b9dcc0..32ea242 100644 --- a/mellon/utils.py +++ b/mellon/utils.py @@ -180,11 +180,12 @@ def import_object(path): @to_list -def get_adapters(idp={}): +def get_adapters(idp={}, **kwargs): idp = idp or {} adapters = tuple(idp.get('ADAPTER', ())) + tuple(app_settings.ADAPTER) for adapter in adapters: - yield import_object(adapter)() + klass = import_object(adapter) + yield klass(**kwargs) def get_values(saml_attributes, name):