Files
gommi/lib/framework/init_route.py
2022-04-21 19:23:01 +09:00

98 lines
2.4 KiB
Python

import os
import sys
from datetime import datetime, timedelta
import json
import traceback
# third-party
from flask import (
redirect,
render_template,
Response,
request,
jsonify,
send_from_directory,
)
from flask_login import login_user, logout_user, current_user, login_required
# sjva 공용
from framework import (
app,
db,
version,
USERS,
login_manager,
logger,
path_data,
check_api,
)
import system
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "POST":
username = request.form["username"]
password = request.form["password"]
remember = request.form["remember"] == "True"
if username not in USERS:
return jsonify("no_id")
elif not USERS[username].can_login(password):
return jsonify("wrong_password")
else:
USERS[username].authenticated = True
login_user(USERS[username], remember=remember)
return jsonify("redirect")
else:
if (
db.session.query(system.ModelSetting)
.filter_by(key="use_login")
.first()
.value
== "False"
):
username = (
db.session.query(system.ModelSetting)
.filter_by(key="id")
.first()
.value
)
logger.debug(f"username:: {username}")
logger.debug(f"USERS:: {USERS}")
USERS[username].authenticated = True
login_user(USERS[username], remember=True)
# current_user = USERS[username]
return redirect(request.args.get("next"))
return render_template("login.html", next=request.args.get("next"))
@app.errorhandler(401)
def custom_401(error):
# return Response('<Why access is denied string goes here...>', 401, {'WWW-Authenticate':'Basic realm="Login Required"'})
return "login_required"
# important!!
@login_manager.user_loader
def user_loader(user_id):
return USERS[user_id]
# ============================================================================
# API
# ============================================================================
@app.route("/")
@app.route("/None")
@app.route("/home")
def home():
logger.warning(request.host_url)
return redirect("/system/home")
@app.route("/version")
def get_version():
# return jsonify(version)
return version