Authentification par email
Bonjour à vous, après avoir réussit à mettre en place l'authentification django j'aimerais maintenant pouvoir utiliser l'email à la place du pseudo. J'ai trouvé le paramètre "ACCOUNT_AUTHENTICATION_METHOD = 'email'" mais le seul changement c'est que je ne peux plus me connecter du tout, ni avec email, ni avec pseudo. Pour ceux qui ont l'habitude d'utiliser django et son authentification, votre aide serait plus que la bienvenue. Merci pour votre temps
forms.py
Code:
1 2 3 4 5 6 7
| from django.contrib.auth import authenticate, get_user_model
from django import forms
User = get_user_model()
class ConnexionForm(forms.Form):
email = forms.EmailField(label="Email", max_length=30)
password = forms.CharField(label="Mot de passe", widget=forms.PasswordInput) |
models.py
Code:
1 2 3 4 5 6 7 8 9 10
| from django.contrib.auth.models import User, BaseUserManager
from django.db import models
class Profil(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
site_web = models.URLField(blank=True)
inscrit_newsletter = models.BooleanField(default=False)
def __str__(self):
return "Profil de {0}".format(self.user.username) |
views.py
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| from django.contrib.auth import authenticate, login, logout
from django import forms
from .forms import ConnexionForm
from django.shortcuts import render, redirect
from django.urls import reverse
def connexion(request):
error = False
if request.method == "POST":
form = ConnexionForm(request.POST)
if form.is_valid():
email = form.cleaned_data["email"]
password = form.cleaned_data["password"]
user = authenticate(email=email, password=password)
if user:
login(request, user)
else:
error = True
else:
form = ConnexionForm()
return render(request, 'connexion.html', locals())
def deconnexion(request):
logout(request)
return redirect(reverse('connexion')) |