inscription

This commit is contained in:
Xavier59 2017-04-01 20:20:01 +02:00
parent 3a807c91d6
commit 49ac12a621
5 changed files with 62 additions and 14 deletions

View File

@ -4,5 +4,15 @@ from django.conf import settings
from django import forms
class LoginForm(forms.Form):
username = forms.CharField(label="Nom d'utilisateur", max_length=settings.USERNAME_LENGTH)
password = forms.CharField(label="Mot de passe", widget=forms.PasswordInput)
# no need for max_length, let's not make heavyer things that can be lighter
username = forms.CharField(label="Nom d'utilisateur")
password = forms.CharField(label="Mot de passe", widget=forms.PasswordInput)
class InscriptionForm(forms.Form):
username = forms.CharField(label="Nom d'utilisateur", min_length=settings.USERNAME_MIN_LENGTH, max_length=settings.USERNAME_MAX_LENGTH)
email = forms.EmailField(label="E-mail")
# Should we silently truncate password or fix maximum length ? Here is a good answer :
# https://security.stackexchange.com/questions/152430/what-maximum-password-length-to-choose-when-using-bcrypt
password1 = forms.CharField(label="Mot de passe", min_length=settings.PASSWORD_MIN_LENGTH, max_length=settings.PASSWORD_MAX_LENGTH, widget=forms.PasswordInput)
password2 = forms.CharField(label="Confirmer mot de passe", min_length=settings.PASSWORD_MIN_LENGTH, max_length=settings.PASSWORD_MAX_LENGTH, widget=forms.PasswordInput)
cgu = forms.BooleanField(label="J'ai lu et j'accepte les conditions générales d'utilisations", initial=False)

View File

@ -3,7 +3,5 @@ from django.conf.urls import url
import account.views as v
urlpatterns = [
url(r'^$', v.account), # Index
url(r'^login/$', v.login),
url(r'^logout/$', v.logout),
]

View File

@ -1,16 +1,19 @@
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate
from django.contrib.auth.models import User
from django.contrib.auth import login as a_login, logout as a_logout
from account.forms import LoginForm
from account.forms import *
from django.core.urlresolvers import reverse
from django.core.validators import validate_email
from django.conf import settings as s
from home.views import homepage
def login(request):
error = False
form = LoginForm()
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data["username"]
password = form.cleaned_data["password"]
@ -20,14 +23,44 @@ def login(request):
return redirect(reverse(homepage))
else:
error = True
else:
form = LoginForm()
return render(request, 'account/login.html',locals())
return render(request, 'login.html', locals())
def logout(request):
a_logout(request)
a_logout(request)
return redirect(reverse(homepage))
def signup(request):
error = False
form = InscriptionForm()
if request.method == "POST":
if form.is_valid():
password1 = form.cleaned_data["password1"]
password2 = form.cleaned_data["password2"]
username = form.cleaned_data["username"]
email = form.cleaned_data["email"]
cgu = form.cleaned_data["cgu"]
if(
username.length < s.USERNAME_MIN_LENGTH or username.length > s.USERNAME_MAX_LENGTH or
password.length < s.PASSWORD_MIN_LENGTH or password.length > s.PASSWORD_MAX_LENGTH or
password1 != password2 or cgu==False
):
error = True
return render(request, 'signup.html', locals())
try:
validate_email(email)
except forms.ValidationError:
error = True
return render(request, 'signup.html', locals())
create_user(username, email, password1)
authenticate(username, password1)
return render(request, 'home.html', locals())
return render(request, 'signupt.html', locals())
def account(request):
pass
return render(request, 'account.html')

View File

@ -145,4 +145,7 @@ STATICFILES_DIRS = (
"/home/web/planete_casio/sfiles/",
)
USERNAME_LENGTH = 30
USERNAME_MIN_LENGTH = 3
USERNAME_MAX_LENGTH = 30
PASSWORD_MIN_LENGTH = 8
PASSWORD_MAX_LENGTH = 72 # maximum number of characters for bcrypt

View File

@ -16,10 +16,14 @@ Including another URLconf
from django.conf import settings
from django.conf.urls import url, include
from django.contrib import admin
import account.views as v
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('home.urls')),
url(r'^forum/', include('forum.urls')),
url(r'^account/', include('account.urls')),
url(r'^login', v.login),
url(r'^logout', v.logout),
url(r'^signup', v.signup)
]