diff options
| author | Markus Krogh <markus@nordu.net> | 2017-06-02 13:19:30 +0200 |
|---|---|---|
| committer | Markus Krogh <markus@nordu.net> | 2017-06-02 13:19:30 +0200 |
| commit | 934702f61f1cbdbf001ebb598c22c75efa247645 (patch) | |
| tree | b0c6725a8c8a682b421aa35eea9662d7fff31bd6 /src/apps/fedlogin | |
| parent | 41afbaae97384968df6312cbe570305208b2216e (diff) | |
Django 1.11 compatible and cleaned up
Diffstat (limited to 'src/apps/fedlogin')
| -rwxr-xr-x | src/apps/fedlogin/__init__.py | 0 | ||||
| -rw-r--r-- | src/apps/fedlogin/middleware.py | 6 | ||||
| -rwxr-xr-x | src/apps/fedlogin/models.py | 1 | ||||
| -rwxr-xr-x | src/apps/fedlogin/tests.py | 23 | ||||
| -rwxr-xr-x | src/apps/fedlogin/views.py | 40 |
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) |
