from app import app
from extensions import db
from models import User, Role, Permission

def init_rbac():
    with app.app_context():
        print("🚀 正在初始化 RBAC 系统...")
        
        # 1. 创建基础权限
        perms = {
            'view_logs': '查看系统日志',
            'manage_rbac': '管理角色与权限',
            'manage_users': '管理用户信息',
            'manage_dicts': '管理系统字典',
            'manage_notifications': '管理系统通知',
            'manage_system': '系统最高权限'
        }
        perm_objs = {}
        for code, desc in perms.items():
            p = Permission.query.filter_by(name=code).first()
            if not p:
                p = Permission(name=code, description=desc)
                db.session.add(p)
            perm_objs[code] = p
        
        db.session.commit()
        
        # 2. 创建基础角色
        # 超级管理员角色
        admin_role = Role.query.filter_by(name='超级管理员').first()
        if not admin_role:
            admin_role = Role(name='超级管理员', description='系统最高权限持有者')
            admin_role.permissions = list(perm_objs.values())
            db.session.add(admin_role)
        else:
            # 确保现有超级管理员拥有所有新权限
            admin_role.permissions = list(perm_objs.values())
            
        # 普通用户角色
        user_role = Role.query.filter_by(name='普通用户').first()
        if not user_role:
            user_role = Role(name='普通用户', description='常规功能使用者')
            db.session.add(user_role)
            
        db.session.commit()
        
        # 3. 为现有用户分配超级管理员角色（作为测试）
        # 请根据实际情况修改
        first_user = User.query.first()
        if first_user:
            first_user.role = admin_role
            db.session.commit()
            print(f"✅ 已将用户 {first_user.phone} 设为超级管理员")

        print("✨ RBAC 初始化完成")

if __name__ == '__main__':
    init_rbac()