api limiter & auto bp register

This commit is contained in:
h z
2024-12-03 11:28:40 +00:00
parent a93bd5d870
commit e929f67f4e
6 changed files with 62 additions and 24 deletions

View File

@@ -1,7 +1,11 @@
#api/__init__.py
import os
from functools import wraps
from flask import jsonify, session
from flask import jsonify, session, Blueprint
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
import importlib
def require_auth(roles=[]):
@@ -15,4 +19,23 @@ def require_auth(roles=[]):
return jsonify({"error": "Forbidden, permission denied"}), 403
return func(*args, **kwargs)
return wrapper
return decorator
return decorator
limiter = Limiter(
key_func=get_remote_address,
default_limits=["100 per minute"]
)
def register_blueprints(app):
current_dir = os.path.dirname(__file__)
for filename in os.listdir(current_dir):
if filename == "__init__.py" or not filename.endswith(".py"):
continue
module_name = filename[:-3]
module = importlib.import_module(f"api.{module_name}")
for attr in dir(module):
bp = getattr(module, attr)
if isinstance(bp, Blueprint):
app.register_blueprint(bp)