| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 
"""Authentication module"""import osfrom flask_login import login_required, login_user, logout_user, current_userfrom flask_menu import Menu, register_menufrom flask import render_template, request, redirect, url_for, flash, Blueprint, abort, jsonifyfrom jinja2 import TemplateNotFoundfrom app import app, login_manager, dbfrom app.models import User, PageBLUEPRINT = Blueprint(    'auth',    __name__,    template_folder='templates')@BLUEPRINT.route("/login", methods=["GET", "POST"])def login():    """Handle login page and data"""    if request.method == 'POST':        email = request.form['email']        password = request.form['password']        user = User.query.filter(User.email == email).first()        if user:            if not user.approved:                flash('Account not approved yet.', 'warning')            if user.check_password(password):                login_user(user, remember=True)                flash('Successfully loggend in.', 'success')                if request.args.get("next"):                    return redirect(request.args.get('next'))                return redirect(url_for('backend.index'))            flash('Password Incorrect.', 'warning')            return render_template('login.j2', login_email=email)        flash('Email not found.', 'warning')    return render_template('login.j2')@BLUEPRINT.route("/register", methods=["POST"])def register():    """Register a new user"""    name = request.form['name'] if 'name' in request.form else None    email = request.form['email'] if 'email' in request.form else None    password = request.form['password'] if 'email' in request.form else None    if name is None:        flash('Fill in the name.', 'warning')        return render_template('login.j2')    if email is None:        flash('Fill in the email.', 'warning')        return render_template(            'login.j2',            name=name        )    if password is None:        flash('Fill in the password.', 'warning')        return render_template(            'login.j2',            name=name,            email=email        )    user = User.query.filter(User.email == email).first()    if user is not None:        flash('Email already taken.', 'warning')        return render_template(            'login.j2',            name=name,        )    user = User()    user.name = name    user.email = email    user.password = password    db.session.add(user)    db.session.commit()    flash('Successfully registered account "%s". Wait for verfication.' % (user.name), 'success')    return render_template('login.j2')@BLUEPRINT.route("/logout")@login_requireddef logout():    """Logout function for users"""    logout_user()    return redirect(url_for('static.show'))
 |