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 + +