src/hdalab/views/profile.py
changeset 308 eab6629b5b31
parent 302 106c33871db4
child 310 05c9f6551fde
--- a/src/hdalab/views/profile.py	Thu Jul 24 16:25:52 2014 +0200
+++ b/src/hdalab/views/profile.py	Tue Aug 19 18:29:35 2014 +0200
@@ -4,11 +4,24 @@
 
 @author: tc
 '''
+
+
 from datetime import datetime
+from django.conf import settings
+from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login
+from django.contrib.auth.forms import AuthenticationForm
+from django.contrib.sites.models import get_current_site
+from django.core.urlresolvers import reverse
 from django.db.models import Q
 from django.http import HttpResponse
+from django.http import HttpResponseRedirect
 from django.shortcuts import get_object_or_404, redirect
-from django.views.decorators.csrf import csrf_exempt
+from django.shortcuts import resolve_url
+from django.template.response import TemplateResponse
+from django.utils.http import is_safe_url
+from django.views.decorators.cache import never_cache
+from django.views.decorators.csrf import csrf_exempt, csrf_protect
+from django.views.decorators.debug import sensitive_post_parameters
 from django.views.generic import TemplateView, View
 from hdabo.models import Tag
 from hdalab.models.renkan import HdalabRenkan
@@ -20,8 +33,8 @@
 import uuid
 
 
+
 import logging
-from django.core.urlresolvers import reverse
 logger = logging.getLogger(__name__)
 
 
@@ -80,6 +93,9 @@
             if rk.owner!=self.request.user:
                 raise Exception("You are not allowed to edit this renkan")
         
+        form = AuthenticationForm(self.request)
+        context["form"] = form
+        
         return context
 
 
@@ -252,4 +268,47 @@
         if "next" in request.GET:
             return redirect(request.GET["next"])
         return redirect(reverse('profile_home'))
+
+
+
+# Function copied from django.contrib.auth.views to simplify ajax login
+@sensitive_post_parameters()
+@csrf_protect
+@never_cache
+def ajax_login(request, template_name='ajax_identification/ajax_login.html',
+          redirect_field_name=REDIRECT_FIELD_NAME,
+          authentication_form=AuthenticationForm,
+          current_app=None, extra_context=None):
+    """
+    Displays the login form and handles the login action.
+    """
+    redirect_to = request.REQUEST.get(redirect_field_name, '')
+
+    if request.method == "POST":
+        form = authentication_form(request, data=request.POST)
+        if form.is_valid():
+
+            # Ensure the user-originating redirection url is safe.
+            if not is_safe_url(url=redirect_to, host=request.get_host()):
+                redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
+
+            # Okay, security check complete. Log the user in.
+            auth_login(request, form.get_user())
+
+            return HttpResponseRedirect(redirect_to)
+    else:
+        form = authentication_form(request)
+
+    current_site = get_current_site(request)
+
+    context = {
+        'form': form,
+        redirect_field_name: redirect_to,
+        'site': current_site,
+        'site_name': current_site.name,
+    }
+    if extra_context is not None:
+        context.update(extra_context)
+    return TemplateResponse(request, template_name, context,
+                            current_app=current_app)
     
\ No newline at end of file