80 lines
2.9 KiB
Python
80 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""drag 模块 RBAC 权限注册(显式路径,禁止通配符)。
|
||
|
||
角色分层:
|
||
- any: 静态 JS/CSS(drag-canvas.js / drag-editor.js / drag.css)
|
||
- logined: .ui 页面与 /api/*.dspy 接口(画布/模板/编译/校验/发布)
|
||
按 per-module RBAC 模式调用 set_role_perm.py,同时注册目录路径与文件路径。
|
||
"""
|
||
import os
|
||
import sys
|
||
|
||
|
||
def find_sage_root():
|
||
candidates = [
|
||
os.path.expanduser('~/repos/sage'),
|
||
os.path.expanduser('~/sage'),
|
||
'/d/scense/scense_app',
|
||
]
|
||
for c in candidates:
|
||
if os.path.isdir(os.path.join(c, 'wwwroot')):
|
||
return c
|
||
return None
|
||
|
||
|
||
def main():
|
||
sage = find_sage_root()
|
||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||
mod = 'drag'
|
||
if sage:
|
||
sys.path.insert(0, sage)
|
||
try:
|
||
from set_role_perm import set_role_perm
|
||
except Exception as e:
|
||
print('[drag] 无法导入 set_role_perm: %s(尝试直接调用)' % e)
|
||
set_role_perm = None
|
||
else:
|
||
print('[drag] 未找到 Sage 根目录,仅打印待注册路径')
|
||
set_role_perm = None
|
||
|
||
# any 角色:静态资源
|
||
any_paths = [
|
||
'/drag/drag-canvas.js', '/drag/drag-editor.js', '/drag/drag.css',
|
||
]
|
||
# logined 角色:页面与接口
|
||
logined_paths = [
|
||
'/drag/index.ui', '/drag/editor.ui',
|
||
'/drag/api/block_defs.dspy', '/drag/api/graph_save.dspy',
|
||
'/drag/api/graph_list.dspy', '/drag/api/graph_get.dspy',
|
||
'/drag/api/graph_delete.dspy', '/drag/api/graph_compile.dspy',
|
||
'/drag/api/graph_validate.dspy', '/drag/api/graph_publish.dspy',
|
||
'/drag/api/template_save.dspy', '/drag/api/template_list.dspy',
|
||
'/drag/api/template_delete.dspy', '/drag/api/template_use.dspy',
|
||
'/drag/api/get_search_entity.dspy', '/drag/api/get_search_drag_status.dspy',
|
||
'/drag/api/get_search_template_category.dspy',
|
||
# CRUD 子目录(xls2ui 生成,注册目录+文件)
|
||
'/drag/drag_graph', '/drag/drag_graph/index.ui',
|
||
'/drag/drag_graph/get_drag_graph.dspy', '/drag/drag_graph/add_drag_graph.dspy',
|
||
'/drag/drag_graph/update_drag_graph.dspy', '/drag/drag_graph/delete_drag_graph.dspy',
|
||
'/drag/drag_template', '/drag/drag_template/index.ui',
|
||
'/drag/drag_template/get_drag_template.dspy', '/drag/drag_template/add_drag_template.dspy',
|
||
'/drag/drag_template/update_drag_template.dspy', '/drag/drag_template/delete_drag_template.dspy',
|
||
]
|
||
|
||
for p in any_paths:
|
||
if set_role_perm:
|
||
set_role_perm(p, 'any')
|
||
else:
|
||
print('any %s' % p)
|
||
for p in logined_paths:
|
||
if set_role_perm:
|
||
set_role_perm(p, 'logined')
|
||
else:
|
||
print('logined %s' % p)
|
||
print('[drag] load_path done. 若未找到 Sage 根,请手工在中心 load_path.py 添加以上路径。')
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main()
|