register a signal that caches the user's credentials on login
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Sat, 27 Apr 2013 00:01:42 +0000 (20:01 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Sat, 27 Apr 2013 00:04:55 +0000 (20:04 -0400)
plstackapi/core/admin.py

index 7e19cf1..dae2256 100644 (file)
@@ -8,6 +8,7 @@ from django.utils.safestring import mark_safe
 from django.contrib.auth.admin import UserAdmin
 from django.contrib.admin.widgets import FilteredSelectMultiple
 from django.contrib.auth.forms import ReadOnlyPasswordHashField
+from django.contrib.auth.signals import user_logged_in 
 
 
 class ReadonlyTabularInline(admin.TabularInline):
@@ -133,7 +134,6 @@ class SliverAdmin(admin.ModelAdmin):
     ]
     list_display = ['ip', 'name', 'slice', 'flavor', 'image', 'key', 'node', 'deploymentNetwork']
 
-
 class UserCreationForm(forms.ModelForm):
     """A form for creating new users. Includes all the required
     fields, plus a repeated password."""
@@ -206,6 +206,13 @@ class PLUserAdmin(UserAdmin):
     ordering = ('email',)
     filter_horizontal = ()
 
+# register a signal that caches the user's credentials when they log in
+def cache_credentials(sender, user, request, **kwds):
+    auth = {'username': request.POST['username'],
+            'password': request.POST['password']}
+    request.session['auth'] = auth
+user_logged_in.connect(cache_credentials)
+
 # Now register the new UserAdmin...
 admin.site.register(PLUser, PLUserAdmin)
 # ... and, since we're not using Django's builtin permissions,