summaryrefslogtreecommitdiffstats
path: root/ipsilon/util/data.py
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2015-06-25 11:00:59 -0400
committerPatrick Uiterwijk <puiterwijk@redhat.com>2015-07-16 15:04:36 +0200
commit2751451f4158417e66974d6415d2da84f612ab3c (patch)
treeb2f9237ab99aa563b9922d073dfcff73e188e994 /ipsilon/util/data.py
parent426f03dffc8f648a12b5f8a4b2ab30c8b4498be3 (diff)
downloadipsilon-2751451f4158417e66974d6415d2da84f612ab3c.tar.gz
ipsilon-2751451f4158417e66974d6415d2da84f612ab3c.tar.xz
ipsilon-2751451f4158417e66974d6415d2da84f612ab3c.zip
Add support for logout over SOAP
As each login session comes in, store the supported logout mechanisms in the SP metadata. Upon a logout request, loop through all of those SP's that support SOAP and log those out first, then log out any remaining sessions using HTTP Redirect. https://fedorahosted.org/ipsilon/ticket/59 Signed-off-by: Rob Crittenden <rcritten@redhat.com> Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
Diffstat (limited to 'ipsilon/util/data.py')
-rw-r--r--ipsilon/util/data.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/ipsilon/util/data.py b/ipsilon/util/data.py
index 53a1756..e0cd6e1 100644
--- a/ipsilon/util/data.py
+++ b/ipsilon/util/data.py
@@ -551,6 +551,10 @@ class SAML2SessionStore(Store):
return self.get_unique_data(self.table, idval, name, value)
def new_session(self, datum):
+ if 'supported_logout_mechs' in datum:
+ datum['supported_logout_mechs'] = ','.join(
+ datum['supported_logout_mechs']
+ )
return self.new_unique_data(self.table, datum)
def get_session(self, session_id=None, request_id=None):
@@ -567,7 +571,7 @@ class SAML2SessionStore(Store):
def get_user_sessions(self, user):
"""
- Retrun a list of all sessions for a given user.
+ Return a list of all sessions for a given user.
"""
rows = self.get_unique_data(self.table, name='user', value=user)
@@ -575,6 +579,8 @@ class SAML2SessionStore(Store):
logged_in = []
for r in rows:
data = self.get_unique_data(self.table, uuidval=r)
+ data[r]['supported_logout_mechs'] = data[r].get(
+ 'supported_logout_mechs', '').split(',')
logged_in.append(data)
return logged_in