cms/init_superuser_permissions.py
yumoqing f57bb0b0af fix: CMS completeness修复 — products.ui + 钉钉回调同步 + 文档路径
- P0: 新增 products.ui 产品架构页面
- P1: 实现钉钉审批回调→cms_content状态同步(approved→published, rejected→draft)
- P2: 修复 docs/architecture.md 路径(/entcms/* → /*),补充cms_sections表
- P2: 重命名 init_superuser.py → init_superuser_permissions.py 避免与scripts/冲突
- build.sh 更新构建后步骤说明
2026-06-03 16:16:05 +08:00

146 lines
4.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
CMS RBAC权限初始化 — superuser角色
为owner.superuser授予CMS所有权限
用法: cd ~/repos/cms && py3/bin/python init_superuser.py
"""
import os, sys, subprocess
def find_app_root():
"""查找CMS应用根目录"""
script_dir = os.path.dirname(os.path.abspath(__file__))
return script_dir
app_root = find_app_root()
sage_root = None
for c in [os.path.expanduser("~/repos/sage"), os.path.expanduser("~/sage")]:
if os.path.isdir(os.path.join(c, "py3", "bin")):
sage_root = c
break
if not sage_root:
sage_root = app_root
py = os.path.join(sage_root, "py3", "bin", "python")
sp = os.path.join(sage_root, "set_role_perm.py") if os.path.exists(os.path.join(sage_root, "set_role_perm.py")) else None
if not sp:
print("ERROR: 找不到set_role_perm.py请确保Sage或CMS已构建")
sys.exit(1)
def run(role, paths):
assert sp is not None, "set_role_perm.py not found"
for p in paths:
print(f" {role:30s} {p}")
subprocess.run([py, sp, role, p], cwd=sage_root, capture_output=True)
# ─── superuser — 所有权限 ───
superuser_paths = [
# entcms 公开页面
"/index.ui",
"/news.ui",
"/news_detail.ui",
"/cases.ui",
"/products.ui",
"/cms_styles.css",
"/cms_scripts.js",
"/menu.ui",
"/admin.ui",
# entcms 内容管理
"/cms_content_list", "/cms_content_list/%",
"/api/cms_content_create.dspy",
"/api/cms_content_update.dspy",
"/api/cms_content_delete.dspy",
"/api/cms_content_list.dspy",
"/api/submit_content_approval.dspy",
# entcms 分类管理
"/cms_categories_list", "/cms_categories_list/%",
"/api/cms_categories_create.dspy",
"/api/cms_categories_update.dspy",
"/api/cms_categories_delete.dspy",
"/api/cms_categories_list.dspy",
"/api/category_options.dspy",
# entcms 栏目管理
"/cms_sections_list", "/cms_sections_list/%",
"/api/cms_sections_create.dspy",
"/api/cms_sections_update.dspy",
"/api/cms_sections_delete.dspy",
"/api/cms_sections_list.dspy",
# entcms 站点配置
"/cms_site_config_list", "/cms_site_config_list/%",
"/api/cms_site_config_create.dspy",
"/api/cms_site_config_update.dspy",
"/api/cms_site_config_delete.dspy",
"/api/cms_site_config_list.dspy",
# entcms 线索管理
"/cms_leads_list", "/cms_leads_list/%",
"/api/cms_leads_create.dspy",
"/api/cms_leads_update.dspy",
"/api/cms_leads_delete.dspy",
"/api/cms_leads_list.dspy",
# entcms 其他API
"/api/submit_lead.dspy",
"/api/get_config.dspy",
"/api/get_published_content.dspy",
"/api/get_content_detail.dspy",
"/api/get_sections.dspy",
# dingdingflow
"/dingdingflow",
"/dingdingflow/index.ui",
"/dingdingflow/menu.ui",
"/dingdingflow/api/dingtalk_callback.dspy",
"/dingdingflow/api/submit_approval.dspy",
# dingdingflow 审批配置
"/dingdingflow/dd_approval_configs", "/dingdingflow/dd_approval_configs/%",
"/dingdingflow/api/dd_approval_configs_create.dspy",
"/dingdingflow/api/dd_approval_configs_update.dspy",
"/dingdingflow/api/dd_approval_configs_delete.dspy",
"/dingdingflow/api/dd_approval_configs_list.dspy",
# dingdingflow 审批单
"/dingdingflow/dd_approvals", "/dingdingflow/dd_approvals/%",
"/dingdingflow/api/dd_approvals_create.dspy",
"/dingdingflow/api/dd_approvals_update.dspy",
"/dingdingflow/api/dd_approvals_delete.dspy",
"/dingdingflow/api/dd_approvals_list.dspy",
# appbase 系统基础模块
"/appbase/appcodes_kv",
"/appbase/appcodes_kv/get_appcodes_kv.dspy",
"/appbase/appcodes_kv/add_appcodes_kv.dspy",
"/appbase/appcodes_kv/update_appcodes_kv.dspy",
"/appbase/appcodes_kv/index.ui",
"/appbase/appcodes_kv/delete_appcodes_kv.dspy",
"/appbase/cron/index.ui",
"/appbase/appcodes",
"/appbase/appcodes/get_appcodes.dspy",
"/appbase/appcodes/add_appcodes.dspy",
"/appbase/appcodes/index.ui",
"/appbase/appcodes/update_appcodes.dspy",
"/appbase/appcodes/delete_appcodes.dspy",
"/appbase/params",
"/appbase/params/update_params.dspy",
"/appbase/params/get_params.dspy",
"/appbase/params/index.ui",
"/appbase/params/add_params.dspy",
"/appbase/params/delete_params.dspy",
"/appbase/svgicon",
"/appbase/svgicon/get_svgicon.dspy",
"/appbase/svgicon/delete_svgicon.dspy",
"/appbase/svgicon/add_svgicon.dspy",
"/appbase/svgicon/update_svgicon.dspy",
"/appbase/svgicon/index.ui",
]
print("=== CMS RBAC权限初始化 — superuser ===")
print(f"\\n--- owner.superuser (超级管理员) ---")
run("owner.superuser", superuser_paths)
print("\\n完成")