# app/__init__.py
from flask import Flask
from .extensions import db, csrf, login_manager  # 确保导入 login_manager
from config import Config
from .models.user import User  # ✅ 导入 User 模型

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)

    # 初始化扩展
    db.init_app(app)
    csrf.init_app(app)
    login_manager.init_app(app)
    login_manager.login_view = 'main.index'
    login_manager.login_message = '请先登录以访问此页面。'

    # ✅ 定义 user_loader 回调
    @login_manager.user_loader
    def load_user(user_id):
        try:
            return User.query.get(int(user_id))
        except Exception as e:
            print(f"Error loading user {user_id}: {e}")
            return None

    # 注册蓝图
    from .routes.main import main_bp
    from .routes.auth import auth_bp  # ✅ 新增：导入 auth 蓝图
    from .routes.course import course_bp  # ✅ 添加这一行
    from .routes.admin import admin_bp  # ✅ 新增：导入 admin 蓝图
    from .routes.student import student_bp  # 👈 新增：导入 student 蓝图
    from .routes.teacher import teacher_bp  # ✅ 导入 teacher 蓝图
    app.register_blueprint(main_bp)
    app.register_blueprint(auth_bp)  # ✅ 新增：注册 auth 蓝图
    app.register_blueprint(course_bp)  # ✅ 添加这一行
    app.register_blueprint(admin_bp, url_prefix='/admin')  # ✅ 新增：注册 admin 蓝图
    app.register_blueprint(student_bp, url_prefix='/student')  # 👈 新增：注册 student 蓝图
    app.register_blueprint(teacher_bp, url_prefix='/teacher')  # ✅ 注册

    return app