From a90192d34be9579d975579e46b9e5c6214330247 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 2 Apr 2019 15:15:27 +0200 Subject: [PATCH 06/13] utils: allow specifying auth level when getting backends --- src/authentic2/utils.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/authentic2/utils.py b/src/authentic2/utils.py index 8d2397c7..bcce327d 100644 --- a/src/authentic2/utils.py +++ b/src/authentic2/utils.py @@ -152,8 +152,12 @@ def load_backend(path): return cls() -def get_backends(setting_name='IDP_BACKENDS'): - '''Return the list of enabled cleaned backends.''' +def get_backends(setting_name='IDP_BACKENDS', required_auth_level=1): + '''Return the list of enabled cleaned backends. + + required_auth_level param allows to filter backends on the authentication + levels they provide. When set to 0, filtering is disabled. + ''' backends = [] for backend_path in getattr(app_settings, setting_name): kwargs = {} @@ -163,6 +167,11 @@ def get_backends(setting_name='IDP_BACKENDS'): # If no enabled method is defined on the backend, backend enabled by default. if hasattr(backend, 'enabled') and not backend.enabled(): continue + if required_auth_level and hasattr(backend, 'auth_level'): + if backend.auth_level != required_auth_level: + continue + elif required_auth_level > 1: + continue kwargs_settings = getattr(app_settings, setting_name + '_KWARGS', {}) if backend_path in kwargs_settings: kwargs.update(kwargs_settings[backend_path]) -- 2.20.1