mot de passe.
from django.contrib.auth import authenticate, login
from django.contrib.auth.decorators import login_required
-from django.contrib.auth.forms import AuthenticationForm as OriginalAuthenticationForm
from django.contrib.auth.models import User
from django.db.models import Q
from django.utils.translation import ugettext_lazy as _
-#TODO: Migrer tout ce qui a rapport aux users dans une nouvelle app
-
-class AuthenticationForm(OriginalAuthenticationForm):
- username = forms.CharField(label='Adresse électronique', max_length=255)
-
-def send_password(request):
- if request.method == "POST":
- form = SendPasswordForm(data=request.POST)
- if form.is_valid():
- u = Personne.objects.get(courriel=form.cleaned_data['email'])
- code = u.get_new_password_code()
- link = "%s/accounts/new_password/%s/%s/" % (settings.SITE_ROOT_URL, u.courriel, code)
-
- variables = { 'user': u,
- 'link': link,
- 'SITE_ROOT_URL': settings.SITE_ROOT_URL,
- 'CONTACT_EMAIL': settings.CONTACT_EMAIL }
- t = get_template('accounts/email_password.html')
- content = t.render(variables)
-
- send_mail('Savoirs en partage: changement de mot de passe',
- content, settings.CONTACT_EMAIL,
- [u.courriel], fail_silently=False)
- else:
- form = SendPasswordForm()
-
- return render_to_response("accounts/send_password.html",
- dict(form=form),
- context_instance=RequestContext(request))
-
-def new_password(request, email, code):
- u = Personne.objects.get(courriel=email)
- original_code = u.get_new_password_code()
- message=""
- if(code == original_code):
- if request.method == "POST":
- form = NewPasswordForm(data=request.POST)
- if form.is_valid():
- u.set_password(form.cleaned_data['password'])
- u.save()
- message = "Votre mot de passe a été modifié."
- else:
- form = NewPasswordForm()
- else:
- return HttpResponseRedirect('/')
- return render_to_response("accounts/new_password.html",
- dict(form=form, message=message),
- context_instance=RequestContext(request))
-
-@login_required
-def change_password(request):
- message = ""
- if request.method == "POST":
- form = NewPasswordForm(data=request.POST)
- if form.is_valid():
- request.user.set_password(form.cleaned_data['password'])
- request.user.save()
- message = "Votre mot de passe a été modifié."
- else:
- form = NewPasswordForm()
- variables = { 'form': form,
- 'message': message,
- }
- return render_to_response ("accounts/new_password.html", \
- Context (variables),
- context_instance = RequestContext(request))
-
def index(request):
"""Répertoire des chercheurs"""
search_form = RepertoireSearchForm(request.GET)
DEBUG = True
TEMPLATE_DEBUG = DEBUG
INTERNAL_IPS = ('127.0.0.1',)
+EMAIL_HOST = 'localhost'
+EMAIL_PORT = 1025
# Debug toolbar
* html .clearfix { height:1%; }
.clearfix { display:block; }
+/* Cadre */
+
.cadre { width: 60%; margin: 100px auto; padding: 20px; background: #f9f9f9; border: 1px solid #aaa }
-.souligne { border-bottom: 1px solid #DDD; }
+.cadre h1 { margin: -20px -20px 0 -20px; padding: 5px; background: #aaa; color: white; font-size: 120%; font-weight: bold; text-align: center; }
WHERE p.actif;
ALTER TABLE chercheurs_personne DROP COLUMN password;
+
+-- On a viré le CascadeBackend, alors on doit virer toutes les sessions, car le
+-- backend d'authentification est stocké dans la session.
+
+TRUNCATE django_session;
+++ /dev/null
-Bonjour {{user.prenom}} {{user.nom}},
-
-Nous avons reçu une demande de changement de mot de passe.
-
-Pour procéder à cette manoeuvre, veuillez vous rendre au lien suivant:
-
-{{link}}
-
-Si vous n'êtes pas l'initiateur de cette demande, merci d'ignorer ce message.
-
-Si vous rencontrez des difficultés, vous pouvez écrire à : {{CONTACT_EMAIL}}
-
-Avec nos meilleures salutations.
-
-_____________________________
-Savoirs en partage
-{{SITE_ROOT_URL}}
-{{CONTACT_EMAIL}}
+++ /dev/null
-{% extends "container_base.html" %}
-
-{% block contenu %}
-<h1>Demande de changement de mot de passe</h1>
-{% if message %}
-<div id="flash-message">{{message}}</div>
-<p>Cliquez <a href="{% url django.contrib.auth.views.login %}">ici</a>
-pour accéder à votre <a href="{% url django.contrib.auth.views.login %}">espace chercheur.</a> </p>
-{% endif %}
-<form method="post">
- <fieldset>
- <span>Veuillez saisir un nouveau mot de passe.</span>
- {% include "table_form.html" %}
- </fieldset>
- <input type="submit" name="Submit" value="Envoyer" class="bouton" />
-</form>
-{% endblock %}
+++ /dev/null
-{% extends "container_base.html" %}
-
-{% block contenu %}
-<h1>Demande de changement de mot de passe</h1>
-{% if form.is_valid %}
-<div id="flash-message">Un message a été envoyé à l'adresse électronique spécifiée.</div>
-{% else %}
-<form method="post">
- <fieldset>
- {% include "table_form.html" %}
- <span>Veuillez entrer l'adresse électronique avec laquelle vous avez completé votre inscription.</span>
- </fieldset>
- <input type="submit" name="Submit" value="Envoyer" class="bouton" />
-</form>
-{% endif %}
-{% endblock %}
{% if request.chercheur %}
<li><a href="{% url chercheurs.views.perso %}">Espace chercheur</a></li>
{% else %}
-<li><a href="{% url django.contrib.auth.views.login %}">Se connecter</a></li>
+<li><a href="{% url chercheurs-login %}">Se connecter</a></li>
<li><a href="{% url chercheurs.views.inscription %}">S'inscrire</a></li>
{% endif %}
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<div class="cadre">
+ <p>Vous êtes maintenant déconnecté.</p>
+ <p><a href="{% url savoirs.views.index %}">Retour à l'accueil</a>.</p>
+</div>
+{% endblock %}
+
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<div class="cadre">
+ <h1>Connexion</h1>
+ {% if form.errors %}
+ <p class="form-errors">Login ou mot de passe invalide.</p>
+ {% endif %}
+
+ <form method="post">
+ <table>
+ <tr>
+ <td>Adresse électronique</td>
+ <td>{{ form.username }}</td>
+ </tr>
+ <tr>
+ <td>Mot de passe</td>
+ <td>{{ form.password }}</td>
+ </tr>
+ </table>
+ <input type="submit" value="Connexion" />
+ </form>
+ <p><a href="{% url chercheurs-password-reset %}">Mot de passe oublié ?</a></p>
+ <p>Vous n'avez pas encore de compte?
+ <a href="{% url chercheurs.views.inscription %}">Inscrivez-vous</a>.</p>
+</div>
+
+{% endblock %}
+
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<div class="cadre">
+ <p>Votre nouveau mot de passe a été enregistré</p>
+ <p>Vous pouvez maintenant <a href="{% url chercheurs.views.perso %}">retourner à votre espace chercheur</a>.</p>
+</div>
+{% endblock %}
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<div class="cadre">
+ <h1>Changement de mot de passe</h1>
+ <form method="post">
+ {% include "table_form.html" %}
+ <input type="submit" name="Submit" value="Envoyer" class="bouton" />
+ </form>
+</div>
+{% endblock %}
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<div class="cadre">
+ <p>Votre nouveau mot de passe a été enregistré.</p>
+ <p>Vous pouvez maintenant vous <a href="{% url chercheurs-login %}">connecter au répertoire</a>.</p>
+</div>
+{% endblock %}
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<div class="cadre">
+ <h1>Demande de changement de mot de passe</h1>
+ {% if validlink %}
+ <form method="post">
+ <p>Veuillez choisir un nouveau mot de passe.</p>
+ {% include "table_form.html" %}
+ <input type="submit" name="Submit" value="Envoyer" />
+ </form>
+ {% else %}
+ <p>Cette clé est invalide. Assurez-vous de bien copier le lien qui vous a
+ été envoyé par courriel.</p>
+ <p>Vous pouvez aussi essayer d'<a href="{% url chercheurs-password-reset %}">obtenir une nouvelle clé</a>.</p>
+ {% endif %}
+</div>
+{% endblock %}
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<div class="cadre">
+ <p>Un message a été envoyé à l'adresse électronique spécifiée.</p>
+ <p><a href="{% url savoirs.views.index %}">Retour à l'accueil</a></p>
+</div>
+{% endblock %}
--- /dev/null
+Bonjour {{user.personne.prenom}} {{user.personne.nom}},
+
+Nous avons reçu une demande de changement de mot de passe.
+
+Pour procéder à cette manoeuvre, veuillez vous rendre au lien suivant:
+
+{{ protocol }}://{{ domain }}{% url chercheurs-password-reset-confirm uidb36=uid, token=token %}
+
+Si vous n'êtes pas l'initiateur de cette demande, merci d'ignorer ce message.
+
+Si vous rencontrez des difficultés, vous pouvez écrire à : contact-savoirsenpartage@auf.org
+
+Avec nos meilleures salutations.
+
+--
+Savoirs en partage
+{{ protocol }}://{{ domain }}
+contact-savoirsenpartage@auf.org
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<div class="cadre">
+ <h1>Demande de changement de mot de passe</h1>
+ <form method="post">
+ <p>Veuillez entrer l'adresse électronique avec laquelle vous avez completé votre inscription.</p>
+ {{ form.email }}
+ <input type="submit" name="Submit" value="Envoyer" class="bouton" />
+ </form>
+</div>
+{% endblock %}
+
<ul class="actions">
<li><a href="{% url chercheurs.views.index %}">Tous les chercheurs</a></li>
<li><a href="{% url chercheurs.views.edit %}">Éditer votre fiche</a></li>
- <li><a href="{% url chercheurs.views.change_password %}">Modifier votre mot de passe</a></li>
+ <li><a href="{% url chercheurs-password-change %}">Modifier votre mot de passe</a></li>
<li><a href="{% url savoirs.views.evenement_ajout %}">Ajouter un événement à l'agenda</a></li>
- <li><a href="{% url django.contrib.auth.views.logout %}">Vous déconnecter</a></li>
+ <li><a href="{% url chercheurs-logout %}">Vous déconnecter</a></li>
<li><a href="{% url chercheurs.views.desinscription %}">Vous désinscrire du répertoire</a></li>
</ul>
<a href="{% url savoirs.views.nous_contacter %}">Contact</a> |
<a href="{% url savoirs.views.legal %}">Légal</a> |
{% if user.is_authenticated %}
- <a href="{% url django.contrib.auth.views.logout %}">Déconnexion</a>
+ <a href="{% url chercheurs-logout %}">Déconnexion</a>
{% else %}
- <a href="{% url django.contrib.auth.views.login %}">Connexion</a>
+ <a href="{% url chercheurs-login %}">Connexion</a>
{% endif %}
</div>
</div>
+++ /dev/null
-{% extends "container_base.html" %}
-
-{% block contenu %}
-<div class="cadre">
- <p>Vous êtes maintenant déconnecté.</p>
- <p><a href="{% url savoirs.views.index %}">Retour à l'accueil</a>.</p>
-</div>
-{% endblock %}
-
+++ /dev/null
-{% extends "container_base.html" %}
-
-{% block contenu %}
-
-<h1>Connexion</h1>
-
-{% if form.errors %}
-<p class="form-errors">Login ou mot de passe invalide.</p>
-{% endif %}
-
-<form method="post" action="{% url django.contrib.auth.views.login %}">
- <table>
- <tr>
- <td>Adresse électronique</td>
- <td>{{ form.username }}</td>
- </tr>
- <tr>
- <td>Mot de passe</td>
- <td>{{ form.password }}</td>
- </tr>
- </table>
- <input type="submit" value="Connexion" />
-</form>
-<p><a href="{% url chercheurs.views.send_password %}">Mot de passe oublié ?</a></p>
-<p>Vous n'avez pas encore de compte?
-<a href="{% url chercheurs.views.inscription %}">Inscrivez-vous</a>.</p>
-
-{% endblock %}
-
(r'^chercheurs/perso/$', 'chercheurs.views.perso'),
(r'^chercheurs/edit/$', 'chercheurs.views.edit'),
(r'^chercheurs/conversion$', 'chercheurs.views.conversion'),
- (r'^accounts/login/$', 'django.contrib.auth.views.login'),
- (r'^accounts/change_password/$', 'chercheurs.views.change_password'),
- (r'^accounts/send_password/$', 'chercheurs.views.send_password'),
+ (r'^chercheurs/connexion/$', 'django.contrib.auth.views.login', dict(
+ template_name='chercheurs/login.html'
+ ), 'chercheurs-login'),
+ (r'^chercheurs/deconnexion/$', 'django.contrib.auth.views.logout', dict(
+ template_name='chercheurs/logged_out.html'
+ ), 'chercheurs-logout'),
+ (r'^chercheurs/changement-mdp/$', 'django.contrib.auth.views.password_change', dict(
+ template_name='chercheurs/password_change_form.html',
+ post_change_redirect='/chercheurs/changement-mdp-fini/'
+ ), 'chercheurs-password-change'),
+ (r'^chercheurs/changement-mdp-fini/$', 'django.contrib.auth.views.password_change_done', dict(
+ template_name='chercheurs/password_change_done.html'
+ ), 'chercheurs-password-change-done'),
+ (r'^chercheurs/oubli-mdp/$', 'django.contrib.auth.views.password_reset', dict(
+ template_name='chercheurs/password_reset_form.html',
+ email_template_name='chercheurs/password_reset_email.txt',
+ post_reset_redirect='/chercheurs/oubli-mdp-envoye/'
+ ), 'chercheurs-password-reset'),
+ (r'^chercheurs/oubli-mdp-envoye/$', 'django.contrib.auth.views.password_reset_done', dict(
+ template_name='chercheurs/password_reset_done.html'
+ ), 'chercheurs-password-reset-done'),
+ (r'^chercheurs/oubli-mdp-retour/(?P<uidb36>.*)/(?P<token>.*)/$', 'django.contrib.auth.views.password_reset_confirm', dict(
+ template_name='chercheurs/password_reset_confirm.html'
+ ), 'chercheurs-password-reset-confirm'),
+ (r'^chercheurs/oubli-mdp-fini/$', 'django.contrib.auth.views.password_reset_complete', dict(
+ template_name='chercheurs/password_reset_complete.html'
+ )),
(r'^etablissements/autocomplete/$', 'chercheurs.views.etablissements_autocomplete'),
(r'^etablissements/autocomplete/(?P<pays>.*)/$', 'chercheurs.views.etablissements_autocomplete'),
(r'^admin/(?P<app_name>[^/]*)/(?P<model_name>[^/]*)/assigner_disciplines', 'savoirs.admin_views.assigner_disciplines', {}, 'assigner_disciplines'),
(r'^admin/(.*)', admin.site.root),
- (r'^accounts/logout/$', 'django.contrib.auth.views.logout'),
- (r'^accounts/new_password/(.+)/(.+)/$', 'chercheurs.views.new_password'),
# rss
(r'^rss/(.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict':site_feeds}),