summaryrefslogtreecommitdiff
path: root/src/apps/fedlogin
diff options
context:
space:
mode:
authorMarkus Krogh <markus@nordu.net>2017-06-02 13:19:30 +0200
committerMarkus Krogh <markus@nordu.net>2017-06-02 13:19:30 +0200
commit934702f61f1cbdbf001ebb598c22c75efa247645 (patch)
treeb0c6725a8c8a682b421aa35eea9662d7fff31bd6 /src/apps/fedlogin
parent41afbaae97384968df6312cbe570305208b2216e (diff)
Django 1.11 compatible and cleaned up
Diffstat (limited to 'src/apps/fedlogin')
-rwxr-xr-xsrc/apps/fedlogin/__init__.py0
-rw-r--r--src/apps/fedlogin/middleware.py6
-rwxr-xr-xsrc/apps/fedlogin/models.py1
-rwxr-xr-xsrc/apps/fedlogin/tests.py23
-rwxr-xr-xsrc/apps/fedlogin/views.py40
5 files changed, 70 insertions, 0 deletions
diff --git a/src/apps/fedlogin/__init__.py b/src/apps/fedlogin/__init__.py
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/src/apps/fedlogin/__init__.py
diff --git a/src/apps/fedlogin/middleware.py b/src/apps/fedlogin/middleware.py
new file mode 100644
index 0000000..00f5ba4
--- /dev/null
+++ b/src/apps/fedlogin/middleware.py
@@ -0,0 +1,6 @@
+#MK: 2017-04-27 hack to make it work double proxied...
+from django.contrib.auth.middleware import PersistentRemoteUserMiddleware
+
+class CustomHeaderMiddleware(PersistentRemoteUserMiddleware):
+ header = 'HTTP_X_REMOTE_USER'
+#END MK hack
diff --git a/src/apps/fedlogin/models.py b/src/apps/fedlogin/models.py
new file mode 100755
index 0000000..137941f
--- /dev/null
+++ b/src/apps/fedlogin/models.py
@@ -0,0 +1 @@
+from django.db import models
diff --git a/src/apps/fedlogin/tests.py b/src/apps/fedlogin/tests.py
new file mode 100755
index 0000000..2247054
--- /dev/null
+++ b/src/apps/fedlogin/tests.py
@@ -0,0 +1,23 @@
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+class SimpleTest(TestCase):
+ def test_basic_addition(self):
+ """
+ Tests that 1 + 1 always equals 2.
+ """
+ self.failUnlessEqual(1 + 1, 2)
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
diff --git a/src/apps/fedlogin/views.py b/src/apps/fedlogin/views.py
new file mode 100755
index 0000000..f122ccd
--- /dev/null
+++ b/src/apps/fedlogin/views.py
@@ -0,0 +1,40 @@
+from django.contrib.auth import logout
+from django.http import HttpResponseRedirect
+from django.conf import settings
+from django.core.urlresolvers import reverse
+from django.contrib.auth.views import login
+
+
+def fedlogin(request):
+ user = request.user
+
+ if user.is_authenticated():
+
+ first_name = request.META.get('HTTP_GIVENNAME')
+ last_name = request.META.get('HTTP_SN')
+ email = request.META.get('HTTP_MAIL')
+ affiliations = request.META.get('HTTP_AFFILIATION', '').split(';')
+
+ if first_name:
+ user.first_name = first_name
+ if last_name:
+ user.last_name = last_name
+ if email:
+ user.email = email
+ user.is_staff = 'employee@nordu.net' in affiliations
+ user.is_active = 'employee@nordu.net' in affiliations or 'member@nordu.net' in affiliations
+ if user.password == "":
+ user.password = "(not used for federated logins)"
+ user.save()
+
+ _next = request.GET.get('next')
+ if _next:
+ return HttpResponseRedirect(_next)
+ else:
+ return HttpResponseRedirect(reverse(login))
+
+
+def fedlogout(request):
+ logout(request)
+ url = getattr(settings, 'FEDERATE_LOGOUT_URL', '/Shibboleth.sso/Logout')
+ return HttpResponseRedirect(url)