--- 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>