summaryrefslogtreecommitdiff
path: root/coip
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2010-12-13 12:11:44 +0100
committerLeif Johansson <leifj@sunet.se>2010-12-13 12:11:44 +0100
commitf8a03922700b0686feb25ce20b1e5b608b6201ea (patch)
treefeb51908347e13854507d89530754e40ba60919d /coip
parent32f7e853e2f5a9d85f5c04e8769da2ac21286fc6 (diff)
middleware for mapping users
Diffstat (limited to 'coip')
-rw-r--r--coip/apps/auth/views.py10
-rw-r--r--coip/middleware.py26
-rw-r--r--coip/settings.py3
3 files changed, 30 insertions, 9 deletions
diff --git a/coip/apps/auth/views.py b/coip/apps/auth/views.py
index 6952b0f..6dd311d 100644
--- a/coip/apps/auth/views.py
+++ b/coip/apps/auth/views.py
@@ -28,17 +28,11 @@ def meta1(request,attr):
def accounts_login_federated(request):
if request.user.is_authenticated():
- profile,created = UserProfile.objects.get_or_create(identifier=request.META.get("REMOTE_USER"))
+ profile,created = UserProfile.objects.get_or_create(identifier=request.user.username)
if created:
profile.identifier = request.user.username
- request.user.delete()
- request.user = User(username=anonid())
- request.user.save()
profile.user = request.user
- else:
- request.user.delete()
- request.user = profile.user
- update = True
+ profile.save()
update = False
diff --git a/coip/middleware.py b/coip/middleware.py
new file mode 100644
index 0000000..d612de9
--- /dev/null
+++ b/coip/middleware.py
@@ -0,0 +1,26 @@
+'''
+Created on Dec 13, 2010
+
+@author: leifj
+'''
+from django.core.exceptions import ImproperlyConfigured
+from coip.apps.userprofile.models import UserProfile
+
+class UserMappingMiddleware(object):
+ '''
+ Middleware for supporting merged and mapped user identities
+ '''
+
+ def process_request(self,request):
+ if not hasattr(request,'user'):
+ raise ImproperlyConfigured("Place before RemoteUserMiddleware")
+
+ username = request.META['REMOTE_USER']
+ qs = UserProfile.objects.filter(user__username=username,primary=True)
+ if qs:
+ profile = qs[0]
+ username = profile.identifier
+
+ request.META['REMOTE_USER'] = username
+
+ \ No newline at end of file
diff --git a/coip/settings.py b/coip/settings.py
index 78d7b72..6a62af4 100644
--- a/coip/settings.py
+++ b/coip/settings.py
@@ -54,7 +54,8 @@ MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.auth.middleware.RemoteUserMiddleware',
+ 'coip.middleware.UserMappingMiddleware',
+ 'django.contrib.auth.middleware.RemoteUserMiddleware'
)
AUTHENTICATION_BACKENDS = (