2018-11-15 23:13:15 +01:00
from flask_login import current_user
2018-02-23 23:34:06 +01:00
from flask_wtf import FlaskForm
from wtforms import StringField , PasswordField , BooleanField , SubmitField
from wtforms . validators import ValidationError , DataRequired , Email , EqualTo
2018-11-12 23:27:49 +01:00
from app . models . users import Member
2018-02-23 23:34:06 +01:00
2018-11-15 23:13:15 +01:00
# TODO: Put those validators into a specific file
def validate_username ( self , username ) :
member = Member . query . filter_by ( username = username . data ) . first ( )
if member is not None :
raise ValidationError ( ' Pseudo indisponible. ' )
def validate_email ( form , email ) :
member = Member . query . filter_by ( email = email . data ) . first ( )
if member is not None :
raise ValidationError ( ' Adresse email déjà utilisée. ' )
def validate_password ( form , password ) :
if len ( password . data ) != 0 and len ( password . data ) < 10 :
raise ValidationError ( ' Mot de passe est trop court (10 caractères minimum) ' )
# TODO: add more rules >:]
def verify_authentication ( form , old_password ) :
if not current_user . check_password ( old_password . data ) :
raise ValidationError ( ' Mot de passe erroné ' )
2018-02-23 23:34:06 +01:00
class LoginForm ( FlaskForm ) :
username = StringField ( ' Pseudonyme : ' , validators = [ DataRequired ( ) ] )
password = PasswordField ( ' Mot de passe : ' , validators = [ DataRequired ( ) ] )
remember_me = BooleanField ( ' Se souvenir de moi : ' )
submit = SubmitField ( ' Connexion ' )
class RegistrationForm ( FlaskForm ) :
2018-11-15 23:13:15 +01:00
username = StringField ( ' Pseudonyme : ' , validators = [ DataRequired ( ) ] , validate_username )
email = StringField ( ' Adresse Email : ' , validators = [ DataRequired ( ) , Email ( ) , validate_email ] )
password = PasswordField ( ' Mot de passe ' , validators = [ DataRequired ( ) , validate_password ] )
2018-02-23 23:34:06 +01:00
password2 = PasswordField ( ' Répéter le mot de passe ' , validators = [ DataRequired ( ) , EqualTo ( ' password ' ) ] )
2018-11-12 23:27:49 +01:00
guidelines = BooleanField ( ' J’ accepte les <a href= " # " >CGU</a> ' , validators = [ DataRequired ( ) ] )
newsletter = BooleanField ( ' Inscription à la newsletter ' , description = ' Un mail par trimestre environ, pour être prévenu des concours, évènements et nouveautés. ' )
2018-02-23 23:34:06 +01:00
submit = SubmitField ( ' S \' enregistrer ' )
2018-11-15 23:13:15 +01:00
class UpdateAccountForm ( FlaskForm ) :
email = StringField ( ' Adresse Email : ' , validators = [ Email ( ) , validate_email ] )
password = PasswordField ( ' Mot de passe : ' , validators = [ validate_password ] )
password2 = PasswordField ( ' Répéter le mot de passe ' , validators = [ EqualTo ( ' password ' ) ] )
newsletter = BooleanField ( ' Inscription à la newsletter ' , description = ' Un mail par trimestre environ, pour être prévenu des concours, évènements et nouveautés. ' )
old_password = PasswordField ( ' Ancien mot de passe : ' , validators = [ DataRequired ( ) , verify_authentication ] )
submit = SubmitField ( ' Mettre à jour ' )