From 8b1775a3ad8c11582ea81ae335aef12b207e5036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Schneider?= Date: Wed, 21 Jan 2015 17:05:09 +0100 Subject: [PATCH] backends: add has_sp_login method to test if a local login is already used Refs #6000 --- mandaye/backends/default.py | 6 ++++++ mandaye/backends/ldap_back.py | 8 ++++++++ mandaye/backends/sql.py | 12 ++++++++++++ 3 files changed, 26 insertions(+) diff --git a/mandaye/backends/default.py b/mandaye/backends/default.py index 0caabd1..10e579a 100644 --- a/mandaye/backends/default.py +++ b/mandaye/backends/default.py @@ -95,3 +95,9 @@ class AssociationExample(object): return a dict of the association """ pass + + @staticmethod + def has_sp_login(sp_login, sp_name): + """ Test if a service provider login is present on the databases + """ + pass diff --git a/mandaye/backends/ldap_back.py b/mandaye/backends/ldap_back.py index 7c6b0d6..de6c6d1 100644 --- a/mandaye/backends/ldap_back.py +++ b/mandaye/backends/ldap_back.py @@ -145,3 +145,11 @@ class Association(object): mod_list = [(ldap.MOD_REPLACE, 'lastConnectionDate', last_connection)] storage_conn.modify_s(dn, mod_list) + @staticmethod + def has_sp_login(sp_login, sp_name): + results = storage_conn.search_s(config.ldap_base_dn, ldap.SCOPE_ONELEVEL, + filterstr='(&(objectClass=MandayeUser)(spName=%s)(spLogin=%s))' %\ + (sp_name, sp_login)) + if results: + return True + return False diff --git a/mandaye/backends/sql.py b/mandaye/backends/sql.py index 31254f4..b2ef3d7 100644 --- a/mandaye/backends/sql.py +++ b/mandaye/backends/sql.py @@ -172,3 +172,15 @@ class Association(object): sp_user.last_connection = datetime.utcnow() storage_conn.add(sp_user) + @staticmethod + def has_sp_login(sp_login, sp_name): + sp_user = storage_conn.query(SPUser).\ + join(ServiceProvider).\ + filter(ServiceProvider.name==sp_name).\ + filter(SPUser.login==sp_login).\ + count() + if sp_user: + return True + return False + +