from flask import Blueprint from flask import request from flask import render_template, redirect, url_for, flash from flask_login import login_user from app.forms.auth import LoginForm from app.models.user import User auth = Blueprint('auth', __name__) @auth.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() # Si le formulaire a été posté (submit) et que son contenu # a passé toutes les validations if form.validate_on_submit(): # Si l'utilisateur a cliqué sur "Login" if form.submit.data: # Rechercher l'utilisateur selon l'email entré user = User.query.filter_by(email = form.email.data).first() # Si l'utilisateur est trouvé, et que son mot de passe correspond if user is not None and user.verify_password(form.password.data): # Prendre en compte la connexion de l'utilisateur. # Si 'remember_me' vaut True, un cookie sera ajouté afin de # conserver la connexion active. login_user(user, form.remember_me.data) flash(u"Welcome, %s !" % user.name, "success") # Retourner une redirection # - soit vers la page 'suivante' si le login provient d'une # tentative d'accès à une page protégée # - soit vers la page d'accueil next = request.args.get('next') if next is None or not next.startswith('/'): next = url_for('main.home') return redirect(next) # Si l'utilisateur n'est pas trouvé, on ajoute un message flash # avant de retourner au formulaire flash(u"Invalid username or password.", "error") # Rendu du formulaire dans tous les cas non traités ci-dessus return render_template('auth/login.html', form = form)