#!/usr/bin/env python3 # -*- coding: utf-8 -*- """script_engine 模块 RBAC 路径登记(load_path.py)。""" import os import sys MOD = 'script_engine' PATHS_ANY = ['/%s/menu.ui' % MOD] PATHS_LOGINED = [ '/%s' % MOD, '/%s/index.ui' % MOD, '/%s/script' % MOD, '/%s/script/index.ui' % MOD, '/%s/script/get_script.dspy' % MOD, '/%s/script/add_script.dspy' % MOD, '/%s/script/update_script.dspy' % MOD, '/%s/script/delete_script.dspy' % MOD, '/%s/api/script_create.dspy' % MOD, '/%s/api/script_update.dspy' % MOD, '/%s/api/script_delete.dspy' % MOD, '/%s/api/script_get.dspy' % MOD, '/%s/api/script_list.dspy' % MOD, '/%s/api/script_execute.dspy' % MOD, '/%s/api/script_validate.dspy' % MOD, ] def find_sage_root(): candidates = [ os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', '..'), os.path.expanduser('~/repos/sage'), os.path.expanduser('~/sage'), ] for cand in candidates: if os.path.isdir(os.path.join(cand, 'wwwroot')) and os.path.isdir(os.path.join(cand, 'py3', 'bin')): return os.path.abspath(cand) return None def main(): sage_root = find_sage_root() if not sage_root: print('[script_engine] 未找到 Sage 根目录,跳过 RBAC 登记(由宿主 load_path.py 兜底)') return 0 set_role_perm = os.path.join(sage_root, 'set_role_perm.py') if not os.path.exists(set_role_perm): print('[script_engine] 未找到 set_role_perm.py,跳过') return 0 sys.path.insert(0, sage_root) import importlib.util spec = importlib.util.spec_from_file_location('set_role_perm', set_role_perm) mod = importlib.util.module_from_spec(spec) spec.loader.exec_module(mod) for p in PATHS_ANY: mod.set_role_perm(p, 'any') for p in PATHS_LOGINED: mod.set_role_perm(p, 'logined') print('[script_engine] RBAC 路径登记完成: any=%d, logined=%d' % (len(PATHS_ANY), len(PATHS_LOGINED))) return 0 if __name__ == '__main__': sys.exit(main())