+from werkzeug.security import generate_password_hash, check_password_hash
from flask import Flask, render_template, send_from_directory, request
from flask_socketio import SocketIO, emit
+from flask_httpauth import HTTPBasicAuth
+from flask_cors import CORS
+import json
import os
from .utils import deindex
app = Flask(__name__, instance_relative_config=False)
socketio = SocketIO(app, logger=False, engineio_logger=False)
+auth = HTTPBasicAuth()
+CORS(app)
+# import authentication data
+
+with open(f"{app.root_path}/../../secrets.json", "r", encoding="utf-8") as f:
+ users = json.loads(f.read())
+users = {k: generate_password_hash(v) for (k, v) in users.items()}
+
+# password verifier
+
+def verify_password(username, password):
+ if username in users and check_password_hash(users.get(username), password):
+ return username
+
+auth.verify_password(verify_password)
# root movements
# admin screen pages
-app.route("/admin", methods=["get"])(admin.admin_main)
-app.route("/admin/<string:table_name>", methods=["get", "post"])(admin.admin_table)
+app.route("/admin", methods=["get"])(auth.login_required(admin.admin_main))
+app.route("/admin/<string:table_name>", methods=["get", "post"])(auth.login_required(admin.admin_table))
# script pages