reallife_asset/scripts/load_path.py
yumoqing af65c307f8 feat: add callback handler and group query API for client auth flow
- Add rl_handle_callback() to init.py: handles Volcengine H5 auth callback,
  queries vendor for result, registers rl_org_group mapping
- Add rl_query_groups() to init.py: client API to query authenticated
  group_ids for an org
- Add wwwroot/api/rl_callback.dspy endpoint (no auth required for vendor POST)
- Add wwwroot/api/rl_query_groups.dspy endpoint (login required)
- Remove deprecated rl_app_user_* files (no longer used)
- Update scripts/load_path.py: rl_callback -> any role, rl_query_groups -> logined
2026-05-28 16:57:04 +08:00

82 lines
2.7 KiB
Python

#!/usr/bin/env python3
"""RBAC permission registration for reallife_asset module."""
import os, sys, subprocess
# Find Sage root
home = os.path.expanduser("~")
sage_root = ""
for candidate in [
os.path.join(home, "repos/sage"),
os.path.join(home, "sage"),
]:
if os.path.isdir(os.path.join(candidate, "wwwroot")):
sage_root = candidate
break
if not sage_root:
print("ERROR: Cannot find Sage root")
sys.exit(1)
python = os.path.join(sage_root, "py3/bin/python")
set_perm = os.path.join(sage_root, "set_role_perm.py")
# Permission definitions
paths_any = [
"/reallife_asset/api/rl_callback.dspy", # Volcengine callback - no auth
]
paths_logined = [
"/reallife_asset",
"/reallife_asset/index.ui",
"/reallife_asset/group_manage.ui",
"/reallife_asset/asset_manage.ui",
"/reallife_asset/create_validate.ui",
"/reallife_asset/upload_asset.ui",
"/reallife_asset/sync_groups.ui",
"/reallife_asset/rl_asset_group_list",
"/reallife_asset/rl_asset_group_list/index.ui",
"/reallife_asset/rl_asset_list",
"/reallife_asset/rl_asset_list/index.ui",
"/reallife_asset/api/rl_asset_group_create.dspy",
"/reallife_asset/api/rl_asset_group_update.dspy",
"/reallife_asset/api/rl_asset_group_delete.dspy",
"/reallife_asset/api/rl_asset_create.dspy",
"/reallife_asset/api/rl_asset_update.dspy",
"/reallife_asset/api/rl_asset_delete.dspy",
"/reallife_asset/api/sync_asset_status.dspy",
"/reallife_asset/api/check_validate.dspy",
"/reallife_asset/api/sync_from_vendor.dspy",
"/reallife_asset/api/sync_assets.dspy",
"/reallife_asset/api/get_rl_asset_group_list.dspy",
"/reallife_asset/api/get_rl_asset_list.dspy",
# Downapp user APIs
"/reallife_asset/api/rl_verify.dspy",
"/reallife_asset/api/rl_upload.dspy",
"/reallife_asset/api/rl_status.dspy",
"/reallife_asset/api/rl_query_groups.dspy",
# Vendor Config CRUD
"/reallife_asset/api/rl_vendor_config_create.dspy",
"/reallife_asset/api/rl_vendor_config_update.dspy",
"/reallife_asset/api/rl_vendor_config_delete.dspy",
"/reallife_asset/rl_vendor_config_list",
"/reallife_asset/rl_vendor_config_list/index.ui",
# Org-Group Mapping CRUD
"/reallife_asset/api/rl_org_group_create.dspy",
"/reallife_asset/api/rl_org_group_update.dspy",
"/reallife_asset/api/rl_org_group_delete.dspy",
"/reallife_asset/rl_org_group_list",
"/reallife_asset/rl_org_group_list/index.ui",
]
def run_set_perm(role, path):
cmd = [python, set_perm, role, path]
print(f" {role:12s} {path}")
subprocess.run(cmd, cwd=sage_root)
print("Registering RBAC permissions for reallife_asset...")
for p in paths_any:
run_set_perm("any", p)
for p in paths_logined:
run_set_perm("logined", p)
print("Done.")