MAJOR: Restructured backend Flask application moved all non-routes into utils, renamed routes to not prefix get, created middleware.py to replace utils.py within blueprints
This commit is contained in:
46
web_server/blueprints/middleware.py
Normal file
46
web_server/blueprints/middleware.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from flask import redirect, url_for, request, g, session
|
||||
from functools import wraps
|
||||
import logging
|
||||
|
||||
def logged_in_user():
|
||||
"""
|
||||
Validator to make sure a user is logged in.
|
||||
"""
|
||||
g.user = session.get("username", None)
|
||||
g.admin = session.get("username", None)
|
||||
|
||||
def login_required(view):
|
||||
"""
|
||||
Add at start of routes where users need to be logged in to access.
|
||||
"""
|
||||
@wraps(view)
|
||||
def wrapped_view(*args, **kwargs):
|
||||
if g.user is None:
|
||||
return redirect(url_for("login", next=request.url))
|
||||
return view(*args, **kwargs)
|
||||
return wrapped_view
|
||||
|
||||
def admin_required(view):
|
||||
"""
|
||||
Add at start of routes where admins need to be logged in to access.
|
||||
"""
|
||||
@wraps(view)
|
||||
def wrapped_view(*args, **kwargs):
|
||||
if g.admin != "admin":
|
||||
return redirect(url_for("login", next=request.url))
|
||||
return view(*args, **kwargs)
|
||||
return wrapped_view
|
||||
|
||||
def register_error_handlers(app):
|
||||
error_responses = {
|
||||
400: "Bad Request",
|
||||
403: "Forbidden",
|
||||
404: "Not Found",
|
||||
500: "Internal Server Error"
|
||||
}
|
||||
|
||||
for code, message in error_responses.items():
|
||||
@app.errorhandler(code)
|
||||
def handle_error(error, message=message, code=code):
|
||||
logging.error(f"Error {code}: {str(error)}")
|
||||
return {"error": message}, code
|
||||
Reference in New Issue
Block a user