28 lines
877 B
Python
28 lines
877 B
Python
from flask_sqlalchemy import SQLAlchemy
|
|
from flask_bcrypt import Bcrypt
|
|
from flask_limiter import Limiter
|
|
from flask_limiter.util import get_remote_address
|
|
from flask_login import LoginManager
|
|
from flask_wtf.csrf import CSRFProtect
|
|
|
|
# Initialize extensions
|
|
db = SQLAlchemy()
|
|
bcrypt = Bcrypt()
|
|
login_manager = LoginManager()
|
|
login_manager.login_view = 'auth.login'
|
|
csrf = CSRFProtect()
|
|
|
|
# Initialize rate limiter with fallback storage
|
|
try:
|
|
limiter = Limiter(
|
|
key_func=get_remote_address,
|
|
default_limits=["200 per day", "50 per hour"],
|
|
storage_uri="memory://" # Use memory storage for development
|
|
)
|
|
except Exception as e:
|
|
print(f"Error initializing rate limiter: {e}")
|
|
# Fallback limiter with very basic functionality
|
|
limiter = Limiter(
|
|
key_func=get_remote_address,
|
|
default_limits=["200 per day", "50 per hour"]
|
|
)
|