diff options
author | Leif Johansson <leifj@sunet.se> | 2010-12-13 12:11:44 +0100 |
---|---|---|
committer | Leif Johansson <leifj@sunet.se> | 2010-12-13 12:11:44 +0100 |
commit | f8a03922700b0686feb25ce20b1e5b608b6201ea (patch) | |
tree | feb51908347e13854507d89530754e40ba60919d | |
parent | 32f7e853e2f5a9d85f5c04e8769da2ac21286fc6 (diff) |
middleware for mapping users
-rw-r--r-- | coip/apps/auth/views.py | 10 | ||||
-rw-r--r-- | coip/middleware.py | 26 | ||||
-rw-r--r-- | coip/settings.py | 3 |
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 = ( |