models: inherit from oauth2.Client to add logout urls
This commit is contained in:
parent
60ad3b099d
commit
7d5a3f1356
|
@ -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
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
from django.contrib import admin
|
||||
|
||||
from . import models
|
||||
|
||||
admin.site.register(models.A2Client)
|
|
@ -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
|
||||
|
|
Reference in New Issue