fix(admin): restore default menu visibility and protection
This commit is contained in:
@@ -404,7 +404,28 @@ def update_menu(db: Session, menu_id: int, payload: MenuUpdateRequest) -> MenuPu
|
||||
|
||||
def delete_menu(db: Session, menu_id: int) -> bool:
|
||||
menu = get_menu_by_id(db, menu_id)
|
||||
if not menu or menu.code in {"admin.users", "admin.roles", "admin.menus", "admin.system_params", "admin.power_lines", "admin.lightning_currents", "admin.lightning_distribution", "admin.workers", "admin.task_monitor", "admin.atp_models", "admin.tower_models", "admin.files", "admin.elevation", "admin.syslog", "admin.wine_runner"}:
|
||||
if not menu or menu.code in {
|
||||
"admin.users",
|
||||
"admin.roles",
|
||||
"admin.menus",
|
||||
"admin.system_params",
|
||||
"admin.system",
|
||||
"admin.system_monitor",
|
||||
"admin.basic_data",
|
||||
"admin.power_lines",
|
||||
"admin.fl_analysis",
|
||||
"admin.fault_recurrence",
|
||||
"admin.lightning_currents",
|
||||
"admin.lightning_distribution",
|
||||
"admin.workers",
|
||||
"admin.task_monitor",
|
||||
"admin.atp_models",
|
||||
"admin.tower_models",
|
||||
"admin.files",
|
||||
"admin.elevation",
|
||||
"admin.syslog",
|
||||
"admin.wine_runner",
|
||||
}:
|
||||
return False
|
||||
child_exists = db.scalar(select(Menu.id).where(Menu.parent_id == menu_id))
|
||||
if child_exists is not None:
|
||||
|
||||
@@ -67,13 +67,17 @@ PROTECTED_MENU_CODES = {
|
||||
"admin.roles",
|
||||
"admin.menus",
|
||||
"admin.system_params",
|
||||
"admin.system",
|
||||
"admin.system_monitor",
|
||||
"admin.wxapp",
|
||||
"admin.basic_data",
|
||||
"admin.files",
|
||||
"admin.elevation",
|
||||
"admin.tower_models",
|
||||
"admin.filedetector",
|
||||
"admin.baidu_pan",
|
||||
"admin.power_lines",
|
||||
"admin.fl_analysis",
|
||||
"admin.fault_recurrence",
|
||||
"admin.lightning_currents",
|
||||
"admin.lightning_distribution",
|
||||
|
||||
@@ -92,6 +92,7 @@ MENU_CODE_PERMISSION_MAP: dict[str, set[str]] = {
|
||||
"admin.roles": {"role.read", "role.manage"},
|
||||
"admin.menus": {"menu.read", "menu.manage"},
|
||||
"admin.system_params": {"system_param.read", "system_param.manage"},
|
||||
"admin.fl_analysis": {"line.read", "line.manage"},
|
||||
"admin.files": {"file.read", "file.manage"},
|
||||
"admin.elevation": {"elevation.read", "elevation.manage"},
|
||||
"admin.tower_models": {"tower_model.read", "tower_model.manage"},
|
||||
|
||||
@@ -216,7 +216,7 @@ DEFAULT_MENUS: list[dict[str, object]] = [
|
||||
"icon": "Network",
|
||||
"parent_code": None,
|
||||
"type": "menu",
|
||||
"sort_order": 50,
|
||||
"sort_order": 0,
|
||||
"status": "enabled",
|
||||
"visible": True,
|
||||
"cacheable": False,
|
||||
@@ -378,10 +378,70 @@ DEFAULT_MENUS: list[dict[str, object]] = [
|
||||
"cacheable": False,
|
||||
"permission_code": "wine.read",
|
||||
},
|
||||
{
|
||||
"code": "admin.basic_data",
|
||||
"name": "基础数据",
|
||||
"path": None,
|
||||
"icon": "Database",
|
||||
"parent_code": None,
|
||||
"type": "directory",
|
||||
"sort_order": 97,
|
||||
"status": "enabled",
|
||||
"visible": True,
|
||||
"cacheable": False,
|
||||
"permission_code": None,
|
||||
},
|
||||
{
|
||||
"code": "admin.system_monitor",
|
||||
"name": "系统监控",
|
||||
"path": None,
|
||||
"icon": "Activity",
|
||||
"parent_code": None,
|
||||
"type": "directory",
|
||||
"sort_order": 98,
|
||||
"status": "enabled",
|
||||
"visible": True,
|
||||
"cacheable": False,
|
||||
"permission_code": None,
|
||||
},
|
||||
{
|
||||
"code": "admin.system",
|
||||
"name": "系统管理",
|
||||
"path": None,
|
||||
"icon": "Settings2",
|
||||
"parent_code": None,
|
||||
"type": "directory",
|
||||
"sort_order": 99,
|
||||
"status": "enabled",
|
||||
"visible": True,
|
||||
"cacheable": False,
|
||||
"permission_code": None,
|
||||
},
|
||||
]
|
||||
|
||||
ROLE_MENU_BINDINGS: dict[str, list[str]] = {
|
||||
"admin": ["admin.users", "admin.roles", "admin.menus", "admin.system_params", "admin.power_lines", "admin.fl_analysis", "admin.fault_recurrence", "admin.lightning_currents", "admin.lightning_distribution", "admin.workers", "admin.task_monitor", "admin.atp_models", "admin.tower_models", "admin.files", "admin.elevation", "admin.syslog", "admin.wine_runner"],
|
||||
"admin": [
|
||||
"admin.users",
|
||||
"admin.roles",
|
||||
"admin.menus",
|
||||
"admin.system_params",
|
||||
"admin.power_lines",
|
||||
"admin.fl_analysis",
|
||||
"admin.fault_recurrence",
|
||||
"admin.lightning_currents",
|
||||
"admin.lightning_distribution",
|
||||
"admin.workers",
|
||||
"admin.task_monitor",
|
||||
"admin.atp_models",
|
||||
"admin.tower_models",
|
||||
"admin.files",
|
||||
"admin.elevation",
|
||||
"admin.syslog",
|
||||
"admin.wine_runner",
|
||||
"admin.basic_data",
|
||||
"admin.system_monitor",
|
||||
"admin.system",
|
||||
],
|
||||
"user": [],
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user