api limiter & auto bp register
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user