feat: 增加后端初始化逻辑,自动向数据库注入审计日志菜单与默认权限
This commit is contained in:
@ -142,8 +142,17 @@ def create_app():
|
||||
except ImportError as e:
|
||||
print(f"❌ 错误: Audit 模块导入失败: {e}")
|
||||
|
||||
# 2.9 初始化审计日志菜单和权限(防重复)
|
||||
# -----------------------------------------------------
|
||||
# 2.9 注册库位管理模块 (Warehouse)
|
||||
try:
|
||||
from app.services.permission_service import PermissionService
|
||||
with app.app_context():
|
||||
PermissionService.init_audit_menu()
|
||||
except Exception as e:
|
||||
print(f"⚠️ 审计日志菜单初始化跳过: {e}")
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 2.10 注册库位管理模块 (Warehouse)
|
||||
# -----------------------------------------------------
|
||||
try:
|
||||
from app.api.v1.warehouse import warehouse_bp
|
||||
|
||||
@ -147,3 +147,57 @@ class PermissionService:
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
raise e
|
||||
|
||||
|
||||
@staticmethod
|
||||
def init_audit_menu():
|
||||
"""
|
||||
初始化审计日志菜单和超级管理员权限
|
||||
防重复:只插入不存在的记录
|
||||
"""
|
||||
try:
|
||||
# 1. 检查并创建审计日志菜单
|
||||
menu_code = 'system_audit'
|
||||
existing_menu = SysMenu.query.filter_by(code=menu_code).first()
|
||||
|
||||
if not existing_menu:
|
||||
new_menu = SysMenu(
|
||||
parent_id=0,
|
||||
name='审计日志',
|
||||
code=menu_code,
|
||||
path='/system/audit',
|
||||
sort_order=110,
|
||||
is_visible=True
|
||||
)
|
||||
db.session.add(new_menu)
|
||||
db.session.flush() # 获取新插入的 ID
|
||||
print(f"✅ 审计日志菜单已创建 (code: {menu_code})")
|
||||
else:
|
||||
print(f"ℹ️ 审计日志菜单已存在 (code: {menu_code})")
|
||||
|
||||
# 2. 为超级管理员赋予审计日志菜单权限
|
||||
role_code = 'SUPER_ADMIN'
|
||||
existing_perm = SysRolePermission.query.filter_by(
|
||||
role_code=role_code,
|
||||
target_code=menu_code
|
||||
).first()
|
||||
|
||||
if not existing_perm:
|
||||
new_perm = SysRolePermission(
|
||||
role_code=role_code,
|
||||
target_code=menu_code,
|
||||
type='menu'
|
||||
)
|
||||
db.session.add(new_perm)
|
||||
print(f"✅ 超级管理员已赋予审计日志权限")
|
||||
else:
|
||||
print(f"ℹ️ 超级管理员已拥有审计日志权限")
|
||||
|
||||
# 3. 提交
|
||||
db.session.commit()
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
print(f"❌ 初始化审计日志菜单失败: {str(e)}")
|
||||
raise e
|
||||
|
||||
Reference in New Issue
Block a user