66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
entity 模块 RBAC 路径注册脚本(显式路径,禁止通配符)。
|
||
用法:python scripts/load_path.py(自动寻找 Sage 根目录并调用 set_role_perm.py)
|
||
维护规则:每次新增/删除 wwwroot 下 path,需同步更新本脚本。
|
||
"""
|
||
import os
|
||
import subprocess
|
||
|
||
MODULE = 'entity'
|
||
|
||
PATHS_ANY = [
|
||
f'/{MODULE}/index.ui',
|
||
]
|
||
|
||
PATHS_LOGINED = [
|
||
f'/{MODULE}',
|
||
f'/{MODULE}/index.ui',
|
||
f'/{MODULE}/import_page.ui',
|
||
f'/{MODULE}/api/entity_list.dspy',
|
||
f'/{MODULE}/api/entity_create.dspy',
|
||
f'/{MODULE}/api/entity_update.dspy',
|
||
f'/{MODULE}/api/entity_delete.dspy',
|
||
f'/{MODULE}/api/entity_get.dspy',
|
||
f'/{MODULE}/api/entity_import.dspy',
|
||
f'/{MODULE}/api/entity_import_guard.dspy',
|
||
f'/{MODULE}/api/entity_import_list.dspy',
|
||
f'/{MODULE}/api/entity_import_reject.dspy',
|
||
f'/{MODULE}/api/get_search_entity_type.dspy',
|
||
f'/{MODULE}/api/get_search_status.dspy',
|
||
f'/{MODULE}/api/get_search_import_status.dspy',
|
||
f'/{MODULE}/api/get_search_scene_id.dspy',
|
||
f'/{MODULE}/api/get_search_world_id.dspy',
|
||
]
|
||
|
||
|
||
def find_sage_root():
|
||
here = os.path.dirname(os.path.abspath(__file__))
|
||
candidates = [
|
||
os.path.abspath(os.path.join(here, '..', '..', '..', '..')),
|
||
os.path.expanduser('~/repos/sage'),
|
||
os.path.expanduser('~/sage'),
|
||
]
|
||
for c in candidates:
|
||
if os.path.isdir(os.path.join(c, 'wwwroot')) and os.path.isdir(os.path.join(c, 'py3', 'bin')):
|
||
return c
|
||
return None
|
||
|
||
|
||
def main():
|
||
sage_root = find_sage_root()
|
||
if not sage_root:
|
||
print('[entity] sage root not found, skip RBAC registration')
|
||
return
|
||
python = os.path.join(sage_root, 'py3', 'bin', 'python')
|
||
set_role = os.path.join(sage_root, 'py3', 'bin', 'set_role_perm.py')
|
||
for p in PATHS_ANY:
|
||
subprocess.call([python, set_role, p, 'any'])
|
||
for p in PATHS_LOGINED:
|
||
subprocess.call([python, set_role, p, 'logined'])
|
||
print(f'[entity] RBAC registered: {len(PATHS_ANY)} any + {len(PATHS_LOGINED)} logined')
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main()
|