fixed login redirect
authordurandn
Tue, 28 Jun 2016 12:52:33 +0200
changeset 36 79dc00f6e9a6
parent 35 31d4f0e86723
child 37 aed809b3a075
fixed login redirect
src/iconolab/auth/views.py
src/iconolab/templates/partials/header.html
src/iconolab/templates/registration/login.html
--- a/src/iconolab/auth/views.py	Fri Jun 24 14:26:56 2016 +0200
+++ b/src/iconolab/auth/views.py	Tue Jun 28 12:52:33 2016 +0200
@@ -26,19 +26,23 @@
 	success_url = reverse_lazy('home')
 	redirect_field_name = "next"
 	
+	def get_context_data(self, **kwargs):
+		context = super(LoginView, self).get_context_data(**kwargs)
+		context["next"] = self.get_success_url()
+		return context
+	
 	def get(self, request, *args, **kwargs):
 		if request.user.is_authenticated():
-			return HttpResponseRedirect(self.success_url)
+			return HttpResponseRedirect(self.get_success_url())
 		return super(LoginView, self).get(request, *args, **kwargs)
 	
 	def form_valid(self, form):
+		print(self.request.POST)
 		login(self.request, form.get_user())
-		return super(LoginView, self).form_valid(form)
+		return HttpResponseRedirect(self.get_success_url())
 	
 	def get_success_url(self):
-		redirect_to = self.request.GET.get(self.redirect_field_name)
-		if not is_safe_url(url=redirect_to, host=self.request.get_host()):
-			redirect_to = self.success_url
+		redirect_to = self.request.POST.get(self.redirect_field_name, self.request.GET.get(self.redirect_field_name, self.success_url))
 		return redirect_to
 
 class LogoutView(RedirectView):
--- a/src/iconolab/templates/partials/header.html	Fri Jun 24 14:26:56 2016 +0200
+++ b/src/iconolab/templates/partials/header.html	Tue Jun 28 12:52:33 2016 +0200
@@ -30,7 +30,7 @@
           <li><a href="{% url 'account:logout' %}">Se déconnecter</a></li>
         {% else %}
           <li><a href="{% url 'account:register' %}">Créer un compte</a></li>
-          <li><a href="{% url 'account:login' %}">Se Connecter</a></li>
+          <li><a href="{% url 'account:login' %}?next={{ request.path | urlencode }}">Se Connecter</a></li>
         {% endif %}
       </ul>
     </div><!--/.nav-collapse -->
--- a/src/iconolab/templates/registration/login.html	Fri Jun 24 14:26:56 2016 +0200
+++ b/src/iconolab/templates/registration/login.html	Tue Jun 28 12:52:33 2016 +0200
@@ -18,7 +18,7 @@
 <div class='col-md-6 center centerer'>
     <h3>Se connecter</h3>
     <form class="form" action="{% url 'account:login' %}" method="POST">
-      {% csrf_token %} 
+      {% csrf_token %}
       {% for field in form %}
       <fieldset class="form-group">
         <label class="control-label" for="id_{{ field.name }}">{{ field.label }}</label>
@@ -28,6 +28,7 @@
         {% if field.errors %}{{ field.errors }}{% endif %}
       </fieldset>
       {% endfor %}
+      <input type="hidden" name="next" value="{{next}}">
       <input type="submit" value="Submit"  class="btn btn-primary">
     </form>
 </div>