models: inherit from oauth2.Client to add logout urls

This commit is contained in:
Benjamin Dauvergne 2014-03-10 09:25:03 +01:00
parent 60ad3b099d
commit 7d5a3f1356
3 changed files with 22 additions and 29 deletions

View File

@ -1,6 +1,7 @@
from django.utils.timezone import now
from django.template.loader import render_to_string
class Plugin(object):
def get_before_urls(self):
from . import urls
@ -10,26 +11,22 @@ class Plugin(object):
return ['rest_framework', 'provider', 'provider.oauth2', __name__]
def logout_list(self, request):
from provider.oauth2.models import Client
from . import models
if not request.user.is_authenticated():
return []
qs = Client.objects.filter(accesstoken__user=request.user,
qs = models.A2Client.objects.filter(accesstoken__user=request.user,
accesstoken__expires__gt=now(), logout_url__isnull=False) \
.distinct()
l = []
for client in qs:
for logout_url in client.logout_url.all():
name = client.name
url = logout_url.get_url()
content = render_to_string('idp/saml/logout_fragment.html',
{
'needs_iframe': logout_url.use_iframe,
'name': name,
'url': url,
'iframe_timeout': 2,
})
l.append(content)
name = client.name
url = client.get_logout_url()
ctx = {
'needs_iframe': client.logout_use_iframe,
'name': name,
'url': url,
'iframe_timeout': client.logout_use_iframe_timeout,
}
content = render_to_string('idp/saml/logout_fragment.html', ctx)
l.append(content)
return l

View File

@ -0,0 +1,5 @@
from django.contrib import admin
from . import models
admin.site.register(models.A2Client)

View File

@ -1,15 +1,6 @@
try:
from django.contrib.contenttypes.fields import GenericRelation
django_17 = True
except ImportError:
django_17 = False
from django.contrib.contenttypes.generic import GenericRelation
from provider.oauth2.models import Client
from authentic2.models import LogoutUrl
if django_17:
GenericRelation(LogoutUrl, related_query_name='oauth2_clients')\
.contribute_to_class(Client, 'logout_url')
else:
GenericRelation(LogoutUrl).contribute_to_class(Client, 'logout_url')
from authentic2.models import LogoutUrlAbstract
class A2Client(LogoutUrlAbstract, Client):
pass