1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- """
- Authentication module
- """
- import os
- from flask_login import login_required, login_user, logout_user, current_user
- from flask_menu import Menu, register_menu
- from flask import render_template, request, redirect, url_for, flash, Blueprint, abort, jsonify
- from jinja2 import TemplateNotFound
- from app import app, login_manager, db
- from app.models import User, Page
- BLUEPRINT = 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 not user:
- flash('Email not found.', 'warning')
- return render_template('login.j2')
- if not user.approved:
- flash('Account not approved yet.', 'warning')
- return render_template('login.j2', login_email=email)
- if not user.check_password(password):
- flash('Password Incorrect.', 'warning')
- return render_template('login.j2', login_email=email)
- login_user(user, remember=True)
- flash('Successfully loggend in.', 'success')
- if request.args.get("next") and request.args.get("next") != "/logout":
- print(request.args.get("next"))
- return redirect(request.args.get('next'))
- return redirect(url_for('backend.index'))
- 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 redirect(url_for('auth.login'))
- 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 redirect(url_for('auth.login'))
- @BLUEPRINT.route("/logout")
- @login_required
- def logout():
- """Logout function for users"""
- logout_user()
- return redirect('')
|