def inscription_token(token): utilisateur = Utilisateur.objects(token=token).first() if Utilisateur.verifify_token(token) == 1: flash('Merci, votre inscription a été validée.') return redirect(url_for('login', token=token)) elif Utilisateur.verifify_token(token) == 0: send_confirmation_to(utilisateur, request.host_url) flash("Un nouveau mail de confirmation vous a été envoyé", category='info') return redirect(url_for('login', token=token)) else: utilisateur.delete() flash("Vous devez vous inscrire à nouveau", category='error') return redirect(url_for('inscription'))
class VoeuxForm(FlaskForm): universite_1 = SelectField("Université:", choices=Universite.get_choices(), coerce=ObjectId, validators=[DataRequired()]) universite_2 = SelectField("Université:", choices=Universite.get_choices(), coerce=ObjectId, validators=[DataRequired()]) semestre_1 = SelectField("Semestre:", choices=Voeu.get_semestre_choices(), validators=[DataRequired()]) semestre_2 = SelectField("Semestre:", choices=Voeu.get_semestre_choices(), validators=[DataRequired()]) annee = SelectField("Année:", choices=Utilisateur.get_annee_choices(), validators=[DataRequired()]) submit = SubmitField("Soumettre")
def inscription(): form = RegistrationForm() if form.validate_on_submit(): flash('Un mail vous a été envoyé.') utilisateur = Utilisateur( nom=form.nom.data, prenom=form.prenom.data, mail=form.email.data, departement=form.departement.data, niveau=form.niveau.data, mobilites=[] if form.mobilite_is_non() else [form.mobilite.data], password=generate_password_hash(form.mdp.data)) if Utilisateur.objects(mail=form.email.data).first(): flash("Il y a déjà un compte associé à cette adresse email", category='error') else: send_confirmation_to(utilisateur, request.host_url) return redirect(url_for('login', token=utilisateur.token)) return render_template('auth/inscription.html', form=form)
def login(token=None): utilisateur = Utilisateur.objects(token=token).first() if token else None form = LoginForm(email=utilisateur.mail if utilisateur else "") if request.method == 'POST' and form.validate_on_submit(): utilisateur = Utilisateur.objects(mail=form.email.data).first() if utilisateur: if utilisateur.validate_login(form.mdp.data): if utilisateur.is_active: if login_user(utilisateur, form.remember_me.data): flash("Vous êtes connecté", category='success') return redirect( request.args.get("next") or url_for("index")) else: flash("Votre inscription n'est pas confirmée", category='error') return redirect( url_for('inscription_token', token=utilisateur.token)) else: flash("Email ou mot de passe erroné", category='error') else: flash("Pas de compte associé à cette adresse email", category='error') return render_template('auth/login.html', form=form)
class ProfileForm(FlaskForm): non = ObjectId('666f6f2d6261722d71757578') prenom = StringField('Prénom', validators=[DataRequired()]) nom = StringField('Nom', validators=[DataRequired()]) email = StringField('Email', validators=[DataRequired(), Email()]) departement = SelectField('Département INSA', choices=Departement.get_choices(), coerce=ObjectId, validators=[DataRequired()]) niveau = SelectField('Année d\'études', choices=Utilisateur.get_annee_choices(), validators=[DataRequired()]) choix_mobilite = Universite.get_choices() choix_mobilite.append((non, 'Non')) choix_mobilite.reverse() mobilite = SelectField( 'J\'ai déjà effectué une mobilité internationale : ', choices=choix_mobilite, coerce=ObjectId, validators=[DataRequired()]) def mobilite_is_non(self): return self.mobilite.data == self.__class__.non
def __init__(self, universite): us = Utilisateur.objects(voeux_annee__exists=True) self.universite = universite self._vx_1_by_with_smstr = [(u, u.voeu_1.semestre) for u in us if self.universite == u.voeu_1.universite] self._vx_2_by_with_smstr = [(u, u.voeu_2.semestre) for u in us if self.universite == u.voeu_2.universite]
from web import create_app from dao import Utilisateur, StdUserProxy app = create_app(config='../local.cfg') StdUserProxy.set(Utilisateur.get_root()) with app.app_context(): import web.auth import web.frontend if __name__ == '__main__': app.run()
def reinitialiser_mdp(token): utilisateur = Utilisateur.objects(token=token).first() form = ResetPasswordForm(email=utilisateur.mail) if request.method == 'POST' and form.validate_on_submit(): send_confirmation_to(utilisateur.mail, request.host_url) return render_template('auth/reinit_mdp.html', form=form)