From 1ada840bdc8ac6e5c89ff2476ba2236e5502f39f Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Mon, 8 Jun 2015 18:22:10 +0200 Subject: [PATCH] Possibility to specify a single log out callback --- .../migrations/0018_auto_20150608_1621.py | 26 +++++++++++++++++++ cas_server/models.py | 16 +++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 cas_server/migrations/0018_auto_20150608_1621.py diff --git a/cas_server/migrations/0018_auto_20150608_1621.py b/cas_server/migrations/0018_auto_20150608_1621.py new file mode 100644 index 0000000..d38cebc --- /dev/null +++ b/cas_server/migrations/0018_auto_20150608_1621.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('cas_server', '0017_remove_user_attributs'), + ] + + operations = [ + migrations.AddField( + model_name='servicepattern', + name='single_log_out_callback', + field=models.CharField(default=b'', help_text='URL where the SLO request will be POST. empty = service url\nThis is usefull for non HTTP proxied services.', max_length=255, verbose_name='single log out callback', blank=True), + preserve_default=True, + ), + migrations.AlterField( + model_name='replaceattributname', + name='name', + field=models.CharField(help_text='name of an attribut to send to the service, use * for all attributes', max_length=255, verbose_name='name'), + preserve_default=True, + ), + ] diff --git a/cas_server/models.py b/cas_server/models.py index ae046de..db47bed 100644 --- a/cas_server/models.py +++ b/cas_server/models.py @@ -167,6 +167,16 @@ class ServicePattern(models.Model): help_text=_("Enable SLO for the service") ) + single_log_out_callback = models.CharField( + max_length=255, + default="", + blank=True, + verbose_name=_(u"single log out callback"), + help_text=_(u"URL where the SLO request will be POST. empty = service url\n" \ + u"This is usefull for non HTTP proxied services.") + ) + + def __unicode__(self): return u"%s: %s" % (self.pos, self.pattern) @@ -344,8 +354,12 @@ class Ticket(models.Model): 'ticket': self.value } try: + if self.service_pattern.single_log_out_callback: + url = self.service_pattern.single_log_out_callback + else: + url = self.service return session.post( - self.service.encode('utf-8'), + url.encode('utf-8'), data={'logoutRequest':xml.encode('utf-8')}, ) except Exception as error: