66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
#!/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())
|