llmage/scripts/setup_llmage_perms.sh
yumoqing ce5cfc4463 feat: add customer role RBAC permissions for v1 API endpoints
Grant customer.admin and customer.user roles access to llmage v1 API:
- /v1/chat/completions
- /v1/video/generations
- /v1/image/generations
- /v1/models
- /v1/tasks

Updated both load_path.py and setup_llmage_perms.sh
2026-05-31 09:05:07 +08:00

124 lines
3.4 KiB
Bash
Raw Permalink 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.

#!/bin/bash
# setup_llmage_perms.sh
# 为 llmage 模块的 llm_api_map 管理功能配置 RBAC 角色权限
#
# 授权角色:
# owner.superuser — 系统超管:全局所有模型配置
# *.admin — 机构管理员管理本机构模型通过ownerid隔离数据
# reseller.operator — 运营:产品管理、模型配置
#
# 运行位置: sage 项目根目录 (包含 set_role_perm.py 的目录)
# 用法: bash setup_llmage_perms.sh
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
SAGE_DIR="$(cd "$SCRIPT_DIR/../.." && pwd 2>/dev/null || echo "")"
if [ ! -f "$SAGE_DIR/set_role_perm.py" ]; then
SAGE_DIR="$(cd "$SCRIPT_DIR/.." && pwd 2>/dev/null || echo "")"
fi
if [ ! -f "$SAGE_DIR/set_role_perm.py" ]; then
echo "Error: Cannot find set_role_perm.py"
exit 1
fi
cd "$SAGE_DIR"
COUNT=0
set_perm() {
local role="$1"
local path="$2"
python set_role_perm.py "${role}" "${path}"
COUNT=$((COUNT + 1))
}
# 授权角色(超管 + 各机构管理员 + 运营)
PERM_ROLES=(
"owner.superuser"
"owner.admin"
"reseller.admin"
"provider.admin"
"customer.admin"
"reseller.operator"
)
echo "============================================"
echo " llmage: llm_api_map 权限初始化"
echo "============================================"
LLM_API_MAP_PATHS=(
"/llmage/llm_api_map_manage.ui"
"/llmage/api/llm_api_map_list.dspy"
"/llmage/api/llm_api_map_create.dspy"
"/llmage/api/llm_api_map_delete.dspy"
"/llmage/api/llm_api_map_options.dspy"
"/llmage/api/uapi_options.dspy"
)
for p in "${LLM_API_MAP_PATHS[@]}"; do
for role in "${PERM_ROLES[@]}"; do
set_perm "${role}" "${p}"
done
done
echo ""
echo "============================================"
echo " llmage: 记账失败记录权限初始化"
echo "============================================"
FAILED_ACCOUNTING_PATHS=(
"/llmage/failed_accounting.ui"
"/llmage/api/failed_accounting_list.dspy"
"/llmage/api/llmusage_accounting_failed_create.dspy"
"/llmage/api/llmusage_accounting_failed_update.dspy"
"/llmage/api/llmusage_accounting_failed_delete.dspy"
)
for p in "${FAILED_ACCOUNTING_PATHS[@]}"; do
for role in "${PERM_ROLES[@]}"; do
set_perm "${role}" "${p}"
done
done
echo ""
echo "============================================"
echo " llmage: llmusage CRUD权限初始化"
echo "============================================"
LLMUSAGE_PATHS=(
"/llmage/api/llmusage_create.dspy"
"/llmage/api/llmusage_update.dspy"
"/llmage/api/llmusage_delete.dspy"
)
for p in "${LLMUSAGE_PATHS[@]}"; do
for role in "${PERM_ROLES[@]}"; do
set_perm "${role}" "${p}"
done
done
echo ""
echo "============================================"
echo " llmage: 客户 v1 API 调用权限"
echo "============================================"
CUSTOMER_ROLES=("customer.admin" "customer.user")
V1_API_PATHS=(
"/llmage/v1/chat/completions/index.dspy"
"/llmage/v1/video/generations/index.dspy"
"/llmage/v1/image/generations/index.dspy"
"/llmage/v1/models/index.dspy"
"/llmage/v1/tasks/index.dspy"
)
for p in "${V1_API_PATHS[@]}"; do
for role in "${CUSTOMER_ROLES[@]}"; do
set_perm "${role}" "${p}"
done
done
echo ""
echo "============================================"
echo " 权限配置完成,共设置 ${COUNT} 条权限"
echo "============================================"