Add forgot password.
authorAlexandre Segura <mex.zktk@gmail.com>
Wed, 12 Apr 2017 19:20:16 +0200
changeset 460 5fe876675e24
parent 459 99327a255e04
child 461 4701ee4556e3
Add forgot password.
src/iconolab/auth/urls.py
src/iconolab/templates/registration/login.html
src/iconolab/templates/registration/password_reset_complete.html
src/iconolab/templates/registration/password_reset_confirm.html
src/iconolab/templates/registration/password_reset_done.html
src/iconolab/templates/registration/password_reset_email.html
src/iconolab/templates/registration/password_reset_form.html
src/iconolab/urls.py
--- a/src/iconolab/auth/urls.py	Wed Apr 12 14:36:44 2017 +0200
+++ b/src/iconolab/auth/urls.py	Wed Apr 12 19:20:16 2017 +0200
@@ -8,7 +8,5 @@
     url(r'^register/$', views.RegisterView.as_view(), name='register'),
     url(r'^register/created/$', views.UserCreatedView.as_view(), name='user_created'),
     url(r'^login/$', views.LoginView.as_view(), name='login'),
-    url(r'^password/reset$', password_change, name='password_reset'),
  	url(r'^logout/', views.LogoutView.as_view(), name='logout'),
- 	#url(r'^password/reset', view)
 ]
--- a/src/iconolab/templates/registration/login.html	Wed Apr 12 14:36:44 2017 +0200
+++ b/src/iconolab/templates/registration/login.html	Wed Apr 12 19:20:16 2017 +0200
@@ -20,6 +20,7 @@
       </fieldset>
       {% endfor %}
       <input type="hidden" name="next" value="{{next}}">
+      <p><a href="{% url 'password_reset' %}">Mot de passe oublié ?</a></p>
       <input type="submit" value="S'identifier"  class="btn btn-block btn-primary">
     </form>
 </div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/registration/password_reset_complete.html	Wed Apr 12 19:20:16 2017 +0200
@@ -0,0 +1,8 @@
+{% extends 'iconolab_base.html' %}
+
+{% block content %}
+<div class="col-md-6 col-md-offset-3">
+  <div class="alert alert-info">
+    Votre mot de passe a été mis à jour. Vous pouvez vous <a href="{% url 'account:login' %}">connecter</a>.
+  </div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/registration/password_reset_confirm.html	Wed Apr 12 19:20:16 2017 +0200
@@ -0,0 +1,30 @@
+{% extends 'iconolab_base.html' %}
+
+{% block content %}
+<div class="col-md-6 col-md-offset-3">
+  {% if validlink %}
+    <h3>Mettre à jour le mot de passe</h3>
+    <form method="post">
+      {% csrf_token %}
+      <fieldset class="form-group">
+        <label>Nouveau mot de passe</label>
+        <input type="password" class="form-control" name="{{ form.new_password1.name }}" id="id_{{ form.new_password1.name }}">
+        {% if form.new_password1.help_text %}
+        <p class="help-block">{{ form.new_password1.help_text|safe }}</p>
+        {% endif %}
+      </fieldset>
+
+      <fieldset class="form-group">
+        <label>Confirmation du mot de passe</label>
+        <input type="password" class="form-control" name="{{ form.new_password2.name }}" id="id_{{ form.new_password2.name }}">
+      </fieldset>
+
+      <button type="submit" class="btn btn-block btn-primary">Mettre à jour</button>
+    </form>
+  {% else %}
+    <p>
+      Le lien de réinitialisation du mot de passe est invalide.
+    </p>
+  {% endif %}
+</div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/registration/password_reset_done.html	Wed Apr 12 19:20:16 2017 +0200
@@ -0,0 +1,9 @@
+{% extends 'iconolab_base.html' %}
+
+{% block content %}
+<div class="col-md-6 col-md-offset-3">
+  <div class="alert alert-info">
+    Nous vous avons envoyé un email avec des instructions pour réintialiser votre mot de passe.
+  </div>
+</div>
+{% endblock %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/registration/password_reset_email.html	Wed Apr 12 19:20:16 2017 +0200
@@ -0,0 +1,11 @@
+{% autoescape off %}
+Pour réinitialiser le mot de passe pour votre compte {{ user.get_username }} sur iconolab,
+veuillez suivre le lien ci-dessous :
+
+{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
+
+Si vous ne pouvez pas cliquez sur ce lien, copiez-collez le lien dans votre navigateur.
+
+Cordialement,
+L'équipe iconolab
+{% endautoescape %}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iconolab/templates/registration/password_reset_form.html	Wed Apr 12 19:20:16 2017 +0200
@@ -0,0 +1,16 @@
+{% extends 'iconolab_base.html' %}
+
+{% block content %}
+<div class="col-md-6 col-md-offset-3">
+  <h3 class="text-center">Réinitialisez votre mot de passe </h3>
+  {% if form.errors %}{{ form.errors }}{% endif %}
+  <form method="post">
+    {% csrf_token %}
+    <fieldset class="form-group">
+      <label>Entrez votre email</label>
+      <input type="email" class="form-control" name="{{ form.email.name }}" id="id_{{ form.email.name }}">
+    </fieldset>
+    <button type="submit" class="btn btn-block btn-primary">Réinitialiser</button>
+  </form>
+</div>
+{% endblock %}
--- a/src/iconolab/urls.py	Wed Apr 12 14:36:44 2017 +0200
+++ b/src/iconolab/urls.py	Wed Apr 12 19:20:16 2017 +0200
@@ -23,6 +23,7 @@
 
 from django.conf.urls.static import static
 from django.contrib.auth.decorators import login_required
+from django.contrib.auth.views import password_reset, password_reset_done, password_reset_confirm, password_reset_complete
 from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 import notifications.urls
 
@@ -63,6 +64,11 @@
     url(r'^legalmentions/', views.misc.LegalMentionsView.as_view(), name="iconolab_legals"),
 
     url(r'^account/', include('iconolab.auth.urls', namespace='account')),
+    url(r'^password/reset$', password_reset, name='password_reset'),
+    url(r'^password/reset/done$', password_reset_done, name='password_reset_done'),
+    url(r'^password/reset/complete$', password_reset_complete, name='password_reset_complete'),
+    url(r'^password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', password_reset_confirm, name='password_reset_confirm'),
+
     url(r'^search/', include('iconolab.search_indexes.urls', namespace='search_indexes')),
     url(r'^comments/', include('django_comments_xtd.urls')),
     url(r'^comments/annotation/post', views.comments.post_comment_iconolab, name="post_comment"),