from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from flask_login import LoginManager from flask_bcrypt import Bcrypt from flask_limiter import Limiter from flask_limiter.util import get_remote_address from app.core.csrf_utils import csrf # Import from centralized location # Initialize extensions db = SQLAlchemy() migrate = Migrate() login_manager = LoginManager() login_manager.login_view = "auth.login" login_manager.login_message = "Please log in to access this page." login_manager.login_message_category = "info" bcrypt = Bcrypt() # csrf is now imported from csrf_utils, not defined here limiter = Limiter( key_func=get_remote_address, default_limits=["200 per day", "50 per hour"] )