#!/usr/bin/env python3 """scene 模块 RBAC 路径注册(无通配符,全显式路径)。 用法:python load_path.py (在 Sage/宿主应用根目录执行,自动探测)。 """ import os import sys def find_sage_root(): for candidate in ( os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", ".."), os.path.expanduser("~/repos/sage"), os.path.expanduser("~/sage"), ): c = os.path.abspath(candidate) if os.path.isdir(os.path.join(c, "wwwroot")) and os.path.isdir(os.path.join(c, "py3", "bin")): return c return None SAGE_ROOT = find_sage_root() if not SAGE_ROOT: print("WARN: 未找到 Sage 根目录,跳过 RBAC 注册(请手动在宿主 load_path.py 注册以下路径)") SAGE_ROOT = os.path.expanduser("~/repos/sage") sys.path.insert(0, os.path.join(SAGE_ROOT, "scripts")) sys.path.insert(0, os.path.join(SAGE_ROOT, "py3", "bin")) PATHS_ANY = [ "/scene", "/scene/index.ui", "/scene/import_page.ui", ] PATHS_LOGINED = [ "/scene/scene_list", "/scene/scene_list/index.ui", "/scene/scene_list/get_scene_list.dspy", "/scene/scene_list/add_scene_list.dspy", "/scene/scene_list/update_scene_list.dspy", "/scene/scene_list/delete_scene_list.dspy", "/scene/scene_import_list", "/scene/scene_import_list/index.ui", "/scene/scene_import_list/get_scene_import_list.dspy", "/scene/api/list_scenes.dspy", "/scene/api/get_scene.dspy", "/scene/api/create_scene.dspy", "/scene/api/scene_update.dspy", "/scene/api/scene_delete.dspy", "/scene/api/scene_import.dspy", "/scene/api/get_search_world_id.dspy", "/scene/api/get_search_scene_type.dspy", "/scene/api/get_search_status.dspy", ] def main(): try: from set_role_perm import set_role_perm except Exception as e: print(f"ERROR: 无法导入 set_role_perm: {e}") sys.exit(1) for path in PATHS_ANY: set_role_perm(path, "any") print(f"any {path}") for path in PATHS_LOGINED: set_role_perm(path, "logined") print(f"logined {path}") print("scene RBAC 注册完成") if __name__ == "__main__": main()