From: Maciej Tronowski Date: Mon, 16 Feb 2015 16:06:49 +0000 (+0100) Subject: retrieve proxy from openid X-Git-Tag: v1.0~171 X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=commitdiff_plain;ds=sidebyside;h=6cf5ab746332830c8f77477acbfedbc0aa9bbd76;p=qcg-portal.git retrieve proxy from openid --- diff --git a/qcg/__init__.py b/qcg/__init__.py index e69de29..0d84906 100644 --- a/qcg/__init__.py +++ b/qcg/__init__.py @@ -0,0 +1 @@ +default_app_config = 'qcg.apps.QCGPortalConfig' diff --git a/qcg/apps.py b/qcg/apps.py new file mode 100644 index 0000000..b2d04bb --- /dev/null +++ b/qcg/apps.py @@ -0,0 +1,9 @@ +from django.apps import AppConfig + + +class QCGPortalConfig(AppConfig): + name = 'qcg' + verbose_name = "Portal QCG" + + def ready(self): + import signals diff --git a/qcg/signals.py b/qcg/signals.py new file mode 100644 index 0000000..8f7b8db --- /dev/null +++ b/qcg/signals.py @@ -0,0 +1,14 @@ +from django.dispatch import receiver +from django_openid_auth.signals import openid_login_complete +from openid.extensions import ax + + +@receiver(openid_login_complete) +def post_openid_login(sender, request, openid_response, **kwargs): + fetch_response = ax.FetchResponse.fromSuccessResponse(openid_response) + if fetch_response: + proxy = fetch_response.getSingle('http://openid.plgrid.pl/certificate/proxy') + user_cert = fetch_response.getSingle('http://openid.plgrid.pl/certificate/userCert') + proxy_priv_key = fetch_response.getSingle('http://openid.plgrid.pl/certificate/proxyPrivKey') + + request.session['proxy'] = (proxy + proxy_priv_key + user_cert).replace('
', '\n') diff --git a/qcg/templates/qcg/base.html b/qcg/templates/qcg/base.html index bbb29f3..fcf6291 100644 --- a/qcg/templates/qcg/base.html +++ b/qcg/templates/qcg/base.html @@ -1,4 +1,5 @@ {% load staticfiles webdesign %} +{% load firstof from future %} diff --git a/qcg/urls.py b/qcg/urls.py index c48f41b..de1a7e3 100644 --- a/qcg/urls.py +++ b/qcg/urls.py @@ -3,9 +3,9 @@ from django.conf.urls import patterns, url, include from qcg import views urlpatterns = patterns('', - url(r'^openid/login/', views.openid_login, name='openid-login'), + url(r'^openid/login/', views.openid_begin, name='openid-login'), + url(r'^openid/complete/', 'django_openid_auth.views.login_complete', name='openid-complete'), url(r'^openid/logout/', 'django.contrib.auth.views.logout', {'template_name': 'qcg/logout.html'}, name='logout'), - url(r'^openid/', include('django_openid_auth.urls')), url(r'^$', views.index, name='index'), url(r'^jobs/$', views.jobs_list, name='jobs'), diff --git a/qcg/views.py b/qcg/views.py index bff6d17..eb54d58 100644 --- a/qcg/views.py +++ b/qcg/views.py @@ -12,16 +12,16 @@ def index(request): return render(request, 'qcg/base.html') -def openid_login(request): +def openid_begin(request): openid_request = make_consumer(request).begin(settings.OPENID_SSO_SERVER_URL) fetch_request = ax.FetchRequest() for (attr, alias) in [('http://axschema.org/namePerson/friendly', 'nickname'), ('http://axschema.org/contact/email', 'email'), ('http://axschema.org/namePerson', 'fullname'), - # ('http://openid.plgrid.pl/certificate/proxy', 'proxy'), - # ('http://openid.plgrid.pl/certificate/userCert', 'userCert'), - # ('http://openid.plgrid.pl/certificate/proxyPrivKey', 'proxyPrivKey'), + ('http://openid.plgrid.pl/certificate/proxy', 'proxy'), + ('http://openid.plgrid.pl/certificate/userCert', 'userCert'), + ('http://openid.plgrid.pl/certificate/proxyPrivKey', 'proxyPrivKey'), ('http://openid.plgrid.pl/POSTresponse', 'POSTresponse')]: fetch_request.add(ax.AttrInfo(attr, alias=alias, required=True)) openid_request.addExtension(fetch_request)