16 from flask
import Flask, flash, redirect, render_template, request, session, abort, url_for, Response
17 from flask_login
import LoginManager, UserMixin, login_required, login_user, logout_user, current_user
19 from app
import application
20 from app
import models, utils, db
24 login_manager = LoginManager()
25 login_manager.init_app(application)
26 login_manager.login_view =
"login" 28 @application.route(
'/')
31 user = models.Users.query.filter(models.Users.username ==
'admin').first()
32 return render_template(
'index.html', username=user.username)
35 @application.route(
"/login", methods=[
"GET",
"POST"])
37 if request.method ==
'POST':
38 username = request.form[
'username']
39 password = request.form[
'password']
40 otp = request.form[
'twofactor']
41 hashed_password = utils.hash_password(password)
42 db_user = models.Users.query.filter(models.Users.username == username).first()
44 otp_result = utils.check_otp(otp, db_user.twofactor)
47 return render_template(
'login.html')
49 if db_user
and otp_result
and hashed_password == str(db_user.password):
51 return redirect(url_for(
'index'))
53 return render_template(
'login.html')
55 return render_template(
'login.html')
59 @application.route(
"/logout")
63 return redirect(url_for(
'login'))
65 @login_manager.user_loader
68 user = models.Users.query.filter(models.Users.username == username).first()
73 except Exception
as e:
def user_loader(username)