fix: align devapp member security app id flag
This commit is contained in:
1 parent
2610c8ce87
commit
6447bdd45f
9 files changed
+147
-72
No files matched your search
+27
-10
@@ -583,11 +583,11 @@ func newDevAppMemberListCommand(runner executor.Runner) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "list",
|
||||
Short: "查询开放平台应用成员",
|
||||
Example: " dws devapp member list --app-id <unifiedAppId>",
|
||||
Example: " dws devapp member list --unified-app-id <unifiedAppId>",
|
||||
Args: cobra.NoArgs,
|
||||
DisableAutoGenTag: true,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
appID, err := requiredDevAppID(cmd)
|
||||
appID, err := requiredDevAppUnifiedIDWithLegacyAppID(cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -596,7 +596,7 @@ func newDevAppMemberListCommand(runner executor.Runner) *cobra.Command {
|
||||
})
|
||||
},
|
||||
}
|
||||
cmd.Flags().String("app-id", "", "开放平台统一应用 ID (必填)")
|
||||
addDevAppUnifiedIDFlagWithLegacyAppID(cmd)
|
||||
preferLegacyLeaf(cmd)
|
||||
return cmd
|
||||
}
|
||||
@@ -605,7 +605,7 @@ func newDevAppMemberAddCommand(runner executor.Runner) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "add",
|
||||
Short: "添加开放平台应用成员",
|
||||
Example: " dws devapp member add --app-id <unifiedAppId> --users userId1,userId2 --member-type DEVELOPER --dry-run",
|
||||
Example: " dws devapp member add --unified-app-id <unifiedAppId> --users userId1,userId2 --member-type DEVELOPER --dry-run",
|
||||
Args: cobra.NoArgs,
|
||||
DisableAutoGenTag: true,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
@@ -621,7 +621,7 @@ func newDevAppMemberRemoveCommand(runner executor.Runner) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "remove",
|
||||
Short: "移除开放平台应用成员",
|
||||
Example: " dws devapp member remove --app-id <unifiedAppId> --users userId1,userId2 --member-type DEVELOPER --dry-run",
|
||||
Example: " dws devapp member remove --unified-app-id <unifiedAppId> --users userId1,userId2 --member-type DEVELOPER --dry-run",
|
||||
Args: cobra.NoArgs,
|
||||
DisableAutoGenTag: true,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
@@ -637,7 +637,7 @@ func newDevAppSecurityConfigCommand(runner executor.Runner) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "config",
|
||||
Short: "更新开放平台应用安全配置",
|
||||
Example: " dws devapp security config --app-id <unifiedAppId> " +
|
||||
Example: " dws devapp security config --unified-app-id <unifiedAppId> " +
|
||||
"--ip-whitelist 192.0.2.10 --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --dry-run",
|
||||
Args: cobra.NoArgs,
|
||||
DisableAutoGenTag: true,
|
||||
@@ -645,7 +645,7 @@ func newDevAppSecurityConfigCommand(runner executor.Runner) *cobra.Command {
|
||||
if err := devAppRequireWriteGuard(cmd, "security config"); err != nil {
|
||||
return err
|
||||
}
|
||||
appID, err := requiredDevAppID(cmd)
|
||||
appID, err := requiredDevAppUnifiedIDWithLegacyAppID(cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -666,7 +666,7 @@ func newDevAppSecurityConfigCommand(runner executor.Runner) *cobra.Command {
|
||||
return runDevAppTool(runner, cmd, devAppSecurityConfigTool, params)
|
||||
},
|
||||
}
|
||||
cmd.Flags().String("app-id", "", "开放平台统一应用 ID (必填)")
|
||||
addDevAppUnifiedIDFlagWithLegacyAppID(cmd)
|
||||
cmd.Flags().String("ip-whitelist", "", "出口 IP 白名单,多个用逗号或分号分隔")
|
||||
cmd.Flags().String("redirect-url", "", "登录重定向 URL,多个用逗号或分号分隔")
|
||||
cmd.Flags().String("sso-url", "", "端内免登地址,多个用逗号或分号分隔")
|
||||
@@ -1115,6 +1115,12 @@ func addDevAppUnifiedIDFlag(cmd *cobra.Command) {
|
||||
cmd.Flags().String("unified-app-id", "", "统一应用 ID (必填)")
|
||||
}
|
||||
|
||||
func addDevAppUnifiedIDFlagWithLegacyAppID(cmd *cobra.Command) {
|
||||
addDevAppUnifiedIDFlag(cmd)
|
||||
cmd.Flags().String("app-id", "", "--unified-app-id 的兼容别名")
|
||||
_ = cmd.Flags().MarkHidden("app-id")
|
||||
}
|
||||
|
||||
func requiredDevAppUnifiedID(cmd *cobra.Command) (string, error) {
|
||||
appID := devAppStringFlag(cmd, "unified-app-id")
|
||||
if appID == "" {
|
||||
@@ -1123,6 +1129,17 @@ func requiredDevAppUnifiedID(cmd *cobra.Command) (string, error) {
|
||||
return appID, nil
|
||||
}
|
||||
|
||||
func requiredDevAppUnifiedIDWithLegacyAppID(cmd *cobra.Command) (string, error) {
|
||||
appID := devAppStringFlag(cmd, "unified-app-id")
|
||||
if appID == "" {
|
||||
appID = devAppStringFlag(cmd, "app-id")
|
||||
}
|
||||
if appID == "" {
|
||||
return "", apperrors.NewValidation("--unified-app-id is required")
|
||||
}
|
||||
return appID, nil
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 事件订阅能力
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -1189,7 +1206,7 @@ func devAppEventCodes(cmd *cobra.Command) []string {
|
||||
}
|
||||
|
||||
func registerDevAppMemberMutationFlags(cmd *cobra.Command) {
|
||||
cmd.Flags().String("app-id", "", "开放平台统一应用 ID (必填)")
|
||||
addDevAppUnifiedIDFlagWithLegacyAppID(cmd)
|
||||
cmd.Flags().String("users", "", "成员 userId 列表,多个用逗号分隔 (必填)")
|
||||
cmd.Flags().String("member-type", "", "成员类型,如 DEVELOPER (必填)")
|
||||
}
|
||||
@@ -1198,7 +1215,7 @@ func runDevAppMemberMutation(runner executor.Runner, cmd *cobra.Command, tool, o
|
||||
if err := devAppRequireWriteGuard(cmd, operation); err != nil {
|
||||
return err
|
||||
}
|
||||
appID, err := requiredDevAppID(cmd)
|
||||
appID, err := requiredDevAppUnifiedIDWithLegacyAppID(cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ func TestDevAppMemberCommandsBuildToolParams(t *testing.T) {
|
||||
{
|
||||
name: "list",
|
||||
cmd: "list",
|
||||
args: []string{"--app-id", "app-001"},
|
||||
args: []string{"--unified-app-id", "app-001"},
|
||||
wantTool: "list_dev_app_members",
|
||||
wantParams: map[string]any{
|
||||
"unifiedAppId": "app-001",
|
||||
@@ -54,7 +54,7 @@ func TestDevAppMemberCommandsBuildToolParams(t *testing.T) {
|
||||
{
|
||||
name: "add multiple users",
|
||||
cmd: "add",
|
||||
args: []string{"--app-id", "app-001", "--users", "userId1,userId2,userId3,userId4", "--member-type", "DEVELOPER", "--yes"},
|
||||
args: []string{"--unified-app-id", "app-001", "--users", "userId1,userId2,userId3,userId4", "--member-type", "DEVELOPER", "--yes"},
|
||||
wantTool: "add_dev_app_members",
|
||||
wantParams: map[string]any{
|
||||
"unifiedAppId": "app-001",
|
||||
@@ -65,7 +65,7 @@ func TestDevAppMemberCommandsBuildToolParams(t *testing.T) {
|
||||
{
|
||||
name: "remove trims users",
|
||||
cmd: "remove",
|
||||
args: []string{"--app-id", "app-001", "--users", " userId1 , userId2 ", "--member-type", "DEVELOPER", "--yes"},
|
||||
args: []string{"--unified-app-id", "app-001", "--users", " userId1 , userId2 ", "--member-type", "DEVELOPER", "--yes"},
|
||||
wantTool: "remove_dev_app_members",
|
||||
wantParams: map[string]any{
|
||||
"unifiedAppId": "app-001",
|
||||
@@ -101,6 +101,43 @@ func TestDevAppMemberCommandsBuildToolParams(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDevAppMemberCommandsAcceptLegacyAppIDAlias(t *testing.T) {
|
||||
runner := &captureRunner{}
|
||||
root := newDevAppTestRoot(runner)
|
||||
var out bytes.Buffer
|
||||
root.SetOut(&out)
|
||||
root.SetErr(&out)
|
||||
root.SetArgs([]string{"devapp", "member", "list", "--app-id", "app-001"})
|
||||
|
||||
if err := root.Execute(); err != nil {
|
||||
t.Fatalf("Execute() error = %v\noutput:\n%s", err, out.String())
|
||||
}
|
||||
|
||||
want := map[string]any{"unifiedAppId": "app-001"}
|
||||
if !reflect.DeepEqual(runner.last.Params, want) {
|
||||
t.Fatalf("Params = %#v, want %#v", runner.last.Params, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDevAppMemberListHelpUsesUnifiedAppID(t *testing.T) {
|
||||
root := newDevAppTestRoot(&captureRunner{})
|
||||
var out bytes.Buffer
|
||||
root.SetOut(&out)
|
||||
root.SetErr(&out)
|
||||
root.SetArgs([]string{"devapp", "member", "list", "--help"})
|
||||
|
||||
if err := root.Execute(); err != nil {
|
||||
t.Fatalf("Execute() error = %v\noutput:\n%s", err, out.String())
|
||||
}
|
||||
help := out.String()
|
||||
if !strings.Contains(help, "--unified-app-id") {
|
||||
t.Fatalf("help missing --unified-app-id:\n%s", help)
|
||||
}
|
||||
if strings.Contains(help, "--app-id") {
|
||||
t.Fatalf("help should hide legacy --app-id:\n%s", help)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDevAppCommandHasAppAliasAndCoreCommands(t *testing.T) {
|
||||
root := newDevAppCommand(&captureRunner{})
|
||||
if root.Name() != "devapp" {
|
||||
@@ -903,10 +940,10 @@ func TestDevAppMemberCommandsValidateRequiredFlags(t *testing.T) {
|
||||
args []string
|
||||
wantErr string
|
||||
}{
|
||||
{name: "list requires app", cmd: "list", args: nil, wantErr: "--app-id is required"},
|
||||
{name: "add requires users", cmd: "add", args: []string{"--app-id", "app-001", "--member-type", "DEVELOPER", "--dry-run"}, wantErr: "--users is required"},
|
||||
{name: "add rejects empty users", cmd: "add", args: []string{"--app-id", "app-001", "--users", " , ", "--member-type", "DEVELOPER", "--dry-run"}, wantErr: "--users must contain at least one userId"},
|
||||
{name: "remove requires member type", cmd: "remove", args: []string{"--app-id", "app-001", "--users", "userId1", "--dry-run"}, wantErr: "--member-type is required"},
|
||||
{name: "list requires app", cmd: "list", args: nil, wantErr: "--unified-app-id is required"},
|
||||
{name: "add requires users", cmd: "add", args: []string{"--unified-app-id", "app-001", "--member-type", "DEVELOPER", "--dry-run"}, wantErr: "--users is required"},
|
||||
{name: "add rejects empty users", cmd: "add", args: []string{"--unified-app-id", "app-001", "--users", " , ", "--member-type", "DEVELOPER", "--dry-run"}, wantErr: "--users must contain at least one userId"},
|
||||
{name: "remove requires member type", cmd: "remove", args: []string{"--unified-app-id", "app-001", "--users", "userId1", "--dry-run"}, wantErr: "--member-type is required"},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
@@ -940,7 +977,7 @@ func TestDevAppSecurityConfigBuildsOnlyProvidedLists(t *testing.T) {
|
||||
root.SetErr(&out)
|
||||
root.SetArgs([]string{
|
||||
"devapp", "security", "config",
|
||||
"--app-id", "app-001",
|
||||
"--unified-app-id", "app-001",
|
||||
"--ip-whitelist", "192.0.2.10,192.0.2.11",
|
||||
"--redirect-url", "https://callback.example.invalid/callback",
|
||||
"--sso-url", "https://sso.example.invalid/sso",
|
||||
@@ -974,7 +1011,7 @@ func TestDevAppSecurityConfigOmitsAbsentOptionalLists(t *testing.T) {
|
||||
var out bytes.Buffer
|
||||
root.SetOut(&out)
|
||||
root.SetErr(&out)
|
||||
root.SetArgs([]string{"devapp", "security", "config", "--app-id", "app-001", "--redirect-url", "https://callback.example.invalid/callback", "--dry-run"})
|
||||
root.SetArgs([]string{"devapp", "security", "config", "--unified-app-id", "app-001", "--redirect-url", "https://callback.example.invalid/callback", "--dry-run"})
|
||||
|
||||
if err := root.Execute(); err != nil {
|
||||
t.Fatalf("Execute() error = %v\noutput:\n%s", err, out.String())
|
||||
@@ -995,7 +1032,7 @@ func TestDevAppSecurityConfigRequiresAtLeastOneConfig(t *testing.T) {
|
||||
var out bytes.Buffer
|
||||
root.SetOut(&out)
|
||||
root.SetErr(&out)
|
||||
root.SetArgs([]string{"devapp", "security", "config", "--app-id", "app-001", "--dry-run"})
|
||||
root.SetArgs([]string{"devapp", "security", "config", "--unified-app-id", "app-001", "--dry-run"})
|
||||
|
||||
err := root.Execute()
|
||||
if err == nil {
|
||||
@@ -1009,6 +1046,27 @@ func TestDevAppSecurityConfigRequiresAtLeastOneConfig(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDevAppSecurityConfigAcceptsLegacyAppIDAlias(t *testing.T) {
|
||||
runner := &captureRunner{}
|
||||
root := newDevAppTestRoot(runner)
|
||||
var out bytes.Buffer
|
||||
root.SetOut(&out)
|
||||
root.SetErr(&out)
|
||||
root.SetArgs([]string{"devapp", "security", "config", "--app-id", "app-001", "--redirect-url", "https://callback.example.invalid/callback", "--dry-run"})
|
||||
|
||||
if err := root.Execute(); err != nil {
|
||||
t.Fatalf("Execute() error = %v\noutput:\n%s", err, out.String())
|
||||
}
|
||||
|
||||
want := map[string]any{
|
||||
"unifiedAppId": "app-001",
|
||||
"redirectUrls": []string{"https://callback.example.invalid/callback"},
|
||||
}
|
||||
if !reflect.DeepEqual(runner.last.Params, want) {
|
||||
t.Fatalf("Params = %#v, want %#v", runner.last.Params, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDevAppMemberAndSecurityRequireWriteGuard(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
## 成员查询
|
||||
|
||||
```bash
|
||||
dws devapp member list --app-id UNIFIED_APP_ID --format json
|
||||
dws devapp member list --unified-app-id UNIFIED_APP_ID --format json
|
||||
```
|
||||
|
||||
MCP tool: `list_dev_app_members`
|
||||
@@ -11,8 +11,8 @@ MCP tool: `list_dev_app_members`
|
||||
## 添加成员
|
||||
|
||||
```bash
|
||||
dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --yes --format json
|
||||
dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --yes --format json
|
||||
```
|
||||
|
||||
MCP tool: `add_dev_app_members`
|
||||
@@ -20,30 +20,30 @@ MCP tool: `add_dev_app_members`
|
||||
## 移除成员
|
||||
|
||||
```bash
|
||||
dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json
|
||||
dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json
|
||||
```
|
||||
|
||||
MCP tool: `remove_dev_app_members`
|
||||
|
||||
| CLI | MCP | 说明 |
|
||||
|-----|-----|------|
|
||||
| `--app-id` | `unifiedAppId` | 统一应用 ID(必填) |
|
||||
| `--unified-app-id` | `unifiedAppId` | 统一应用 ID(必填) |
|
||||
| `--users` | `memberUserIds` | userId 列表,逗号分隔(必填) |
|
||||
| `--member-type` | `memberType` | 成员类型,如 `DEVELOPER`(必填) |
|
||||
|
||||
## 安全配置
|
||||
|
||||
```bash
|
||||
dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json
|
||||
dws devapp security config --app-id UNIFIED_APP_ID --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --yes --format json
|
||||
dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json
|
||||
dws devapp security config --unified-app-id UNIFIED_APP_ID --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --yes --format json
|
||||
```
|
||||
|
||||
MCP tool: `update_dev_app_security_config`
|
||||
|
||||
| CLI | MCP | 说明 |
|
||||
|-----|-----|------|
|
||||
| `--app-id` | `unifiedAppId` | 统一应用 ID(必填) |
|
||||
| `--unified-app-id` | `unifiedAppId` | 统一应用 ID(必填) |
|
||||
| `--ip-whitelist` | `ipWhitelist` | 出口 IP 白名单,逗号/分号分隔 |
|
||||
| `--redirect-url` | `redirectUrls` | 登录重定向 URL,逗号/分号分隔 |
|
||||
| `--sso-url` | `ssoUrls` | 端内免登 URL,逗号/分号分隔 |
|
||||
|
||||
@@ -31,14 +31,14 @@
|
||||
→ 确认后加 --yes
|
||||
|
||||
7. 添加开发成员(按需)
|
||||
dws devapp member add --app-id <unifiedAppId> --users <userId> --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member add --unified-app-id <unifiedAppId> --users <userId> --member-type DEVELOPER --dry-run --format json
|
||||
→ 确认后加 --yes
|
||||
|
||||
8. 验证成员
|
||||
dws devapp member list --app-id <unifiedAppId> --format json
|
||||
dws devapp member list --unified-app-id <unifiedAppId> --format json
|
||||
|
||||
9. 配置安全设置(按需)
|
||||
dws devapp security config --app-id <unifiedAppId> --ip-whitelist <IP> --redirect-url <URL> --dry-run --format json
|
||||
dws devapp security config --unified-app-id <unifiedAppId> --ip-whitelist <IP> --redirect-url <URL> --dry-run --format json
|
||||
→ 确认后加 --yes
|
||||
```
|
||||
|
||||
@@ -108,28 +108,28 @@
|
||||
|
||||
```text
|
||||
1. 查看当前成员
|
||||
dws devapp member list --app-id <unifiedAppId> --format json
|
||||
dws devapp member list --unified-app-id <unifiedAppId> --format json
|
||||
|
||||
2. 添加成员
|
||||
dws devapp member add --app-id <unifiedAppId> --users <userId1,userId2> --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member add --unified-app-id <unifiedAppId> --users <userId1,userId2> --member-type DEVELOPER --dry-run --format json
|
||||
→ 确认后加 --yes
|
||||
|
||||
3. 验证
|
||||
dws devapp member list --app-id <unifiedAppId> --format json
|
||||
dws devapp member list --unified-app-id <unifiedAppId> --format json
|
||||
|
||||
4. 移除成员
|
||||
dws devapp member remove --app-id <unifiedAppId> --users <userId> --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member remove --unified-app-id <unifiedAppId> --users <userId> --member-type DEVELOPER --dry-run --format json
|
||||
→ 确认后加 --yes
|
||||
|
||||
5. 验证
|
||||
dws devapp member list --app-id <unifiedAppId> --format json
|
||||
dws devapp member list --unified-app-id <unifiedAppId> --format json
|
||||
```
|
||||
|
||||
## 安全配置
|
||||
|
||||
```text
|
||||
1. 配置 IP 白名单 / 重定向 URL / 免登 URL
|
||||
dws devapp security config --app-id <unifiedAppId> \
|
||||
dws devapp security config --unified-app-id <unifiedAppId> \
|
||||
--ip-whitelist 192.0.2.10,192.0.2.11 \
|
||||
--redirect-url https://callback.example.invalid/callback \
|
||||
--sso-url https://sso.example.invalid/sso \
|
||||
|
||||
@@ -163,9 +163,9 @@ MCP tool: `remove_dev_app_permissions`。`--permissions` 接收一个或多个 `
|
||||
### 成员管理
|
||||
|
||||
```bash
|
||||
dws devapp member list --app-id UNIFIED_APP_ID --format json
|
||||
dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member list --unified-app-id UNIFIED_APP_ID --format json
|
||||
dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json
|
||||
```
|
||||
|
||||
MCP tools: `list_dev_app_members` / `add_dev_app_members` / `remove_dev_app_members`
|
||||
@@ -173,7 +173,7 @@ MCP tools: `list_dev_app_members` / `add_dev_app_members` / `remove_dev_app_memb
|
||||
### 安全配置
|
||||
|
||||
```bash
|
||||
dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --redirect-url https://callback.example.invalid/callback --dry-run --format json
|
||||
dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --redirect-url https://callback.example.invalid/callback --dry-run --format json
|
||||
```
|
||||
|
||||
MCP tool: `update_dev_app_security_config`
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
## 成员查询
|
||||
|
||||
```bash
|
||||
dws devapp member list --app-id UNIFIED_APP_ID --format json
|
||||
dws devapp member list --unified-app-id UNIFIED_APP_ID --format json
|
||||
```
|
||||
|
||||
MCP tool: `list_dev_app_members`
|
||||
@@ -11,8 +11,8 @@ MCP tool: `list_dev_app_members`
|
||||
## 添加成员
|
||||
|
||||
```bash
|
||||
dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --yes --format json
|
||||
dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --yes --format json
|
||||
```
|
||||
|
||||
MCP tool: `add_dev_app_members`
|
||||
@@ -20,30 +20,30 @@ MCP tool: `add_dev_app_members`
|
||||
## 移除成员
|
||||
|
||||
```bash
|
||||
dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json
|
||||
dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json
|
||||
```
|
||||
|
||||
MCP tool: `remove_dev_app_members`
|
||||
|
||||
| CLI | MCP | 说明 |
|
||||
|-----|-----|------|
|
||||
| `--app-id` | `unifiedAppId` | 统一应用 ID(必填) |
|
||||
| `--unified-app-id` | `unifiedAppId` | 统一应用 ID(必填) |
|
||||
| `--users` | `memberUserIds` | userId 列表,逗号分隔(必填) |
|
||||
| `--member-type` | `memberType` | 成员类型,如 `DEVELOPER`(必填) |
|
||||
|
||||
## 安全配置
|
||||
|
||||
```bash
|
||||
dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json
|
||||
dws devapp security config --app-id UNIFIED_APP_ID --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --yes --format json
|
||||
dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json
|
||||
dws devapp security config --unified-app-id UNIFIED_APP_ID --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --yes --format json
|
||||
```
|
||||
|
||||
MCP tool: `update_dev_app_security_config`
|
||||
|
||||
| CLI | MCP | 说明 |
|
||||
|-----|-----|------|
|
||||
| `--app-id` | `unifiedAppId` | 统一应用 ID(必填) |
|
||||
| `--unified-app-id` | `unifiedAppId` | 统一应用 ID(必填) |
|
||||
| `--ip-whitelist` | `ipWhitelist` | 出口 IP 白名单,逗号/分号分隔 |
|
||||
| `--redirect-url` | `redirectUrls` | 登录重定向 URL,逗号/分号分隔 |
|
||||
| `--sso-url` | `ssoUrls` | 端内免登 URL,逗号/分号分隔 |
|
||||
|
||||
@@ -31,14 +31,14 @@
|
||||
→ 确认后加 --yes
|
||||
|
||||
7. 添加开发成员(按需)
|
||||
dws devapp member add --app-id <unifiedAppId> --users <userId> --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member add --unified-app-id <unifiedAppId> --users <userId> --member-type DEVELOPER --dry-run --format json
|
||||
→ 确认后加 --yes
|
||||
|
||||
8. 验证成员
|
||||
dws devapp member list --app-id <unifiedAppId> --format json
|
||||
dws devapp member list --unified-app-id <unifiedAppId> --format json
|
||||
|
||||
9. 配置安全设置(按需)
|
||||
dws devapp security config --app-id <unifiedAppId> --ip-whitelist <IP> --redirect-url <URL> --dry-run --format json
|
||||
dws devapp security config --unified-app-id <unifiedAppId> --ip-whitelist <IP> --redirect-url <URL> --dry-run --format json
|
||||
→ 确认后加 --yes
|
||||
```
|
||||
|
||||
@@ -108,28 +108,28 @@
|
||||
|
||||
```text
|
||||
1. 查看当前成员
|
||||
dws devapp member list --app-id <unifiedAppId> --format json
|
||||
dws devapp member list --unified-app-id <unifiedAppId> --format json
|
||||
|
||||
2. 添加成员
|
||||
dws devapp member add --app-id <unifiedAppId> --users <userId1,userId2> --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member add --unified-app-id <unifiedAppId> --users <userId1,userId2> --member-type DEVELOPER --dry-run --format json
|
||||
→ 确认后加 --yes
|
||||
|
||||
3. 验证
|
||||
dws devapp member list --app-id <unifiedAppId> --format json
|
||||
dws devapp member list --unified-app-id <unifiedAppId> --format json
|
||||
|
||||
4. 移除成员
|
||||
dws devapp member remove --app-id <unifiedAppId> --users <userId> --member-type DEVELOPER --dry-run --format json
|
||||
dws devapp member remove --unified-app-id <unifiedAppId> --users <userId> --member-type DEVELOPER --dry-run --format json
|
||||
→ 确认后加 --yes
|
||||
|
||||
5. 验证
|
||||
dws devapp member list --app-id <unifiedAppId> --format json
|
||||
dws devapp member list --unified-app-id <unifiedAppId> --format json
|
||||
```
|
||||
|
||||
## 安全配置
|
||||
|
||||
```text
|
||||
1. 配置 IP 白名单 / 重定向 URL / 免登 URL
|
||||
dws devapp security config --app-id <unifiedAppId> \
|
||||
dws devapp security config --unified-app-id <unifiedAppId> \
|
||||
--ip-whitelist 192.0.2.10,192.0.2.11 \
|
||||
--redirect-url https://callback.example.invalid/callback \
|
||||
--sso-url https://sso.example.invalid/sso \
|
||||
|
||||
+8
-8
@@ -897,29 +897,29 @@ Agent 安装 dws skill 后,仅依据 skill 提供的参考文档,将自然
|
||||
|
||||
**devapp_devapp_member_list_001**
|
||||
- Prompt: 查看开放平台应用 UNIFIED_APP_ID 的成员
|
||||
- Expected: `dws devapp member list --app-id UNIFIED_APP_ID --format json`
|
||||
- Flags: `--app-id` = `UNIFIED_APP_ID`
|
||||
- Expected: `dws devapp member list --unified-app-id UNIFIED_APP_ID --format json`
|
||||
- Flags: `--unified-app-id` = `UNIFIED_APP_ID`
|
||||
|
||||
#### `dws devapp member add`
|
||||
|
||||
**devapp_devapp_member_add_001**
|
||||
- Prompt: 给开放平台应用 UNIFIED_APP_ID 添加开发者成员 userId1,userId2,先预览
|
||||
- Expected: `dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json`
|
||||
- Flags: `--app-id` = `UNIFIED_APP_ID`, `--users` = `userId1,userId2`, `--member-type` = `DEVELOPER`
|
||||
- Expected: `dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json`
|
||||
- Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--users` = `userId1,userId2`, `--member-type` = `DEVELOPER`
|
||||
|
||||
#### `dws devapp member remove`
|
||||
|
||||
**devapp_devapp_member_remove_001**
|
||||
- Prompt: 已确认,从开放平台应用 UNIFIED_APP_ID 移除开发者成员 userId1
|
||||
- Expected: `dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json`
|
||||
- Flags: `--app-id` = `UNIFIED_APP_ID`, `--users` = `userId1`, `--member-type` = `DEVELOPER`, `--yes`
|
||||
- Expected: `dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json`
|
||||
- Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--users` = `userId1`, `--member-type` = `DEVELOPER`, `--yes`
|
||||
|
||||
#### `dws devapp security config`
|
||||
|
||||
**devapp_devapp_security_config_001**
|
||||
- Prompt: 给开放平台应用 UNIFIED_APP_ID 配置 IP 白名单 192.0.2.10,先预览
|
||||
- Expected: `dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json`
|
||||
- Flags: `--app-id` = `UNIFIED_APP_ID`, `--ip-whitelist` = `192.0.2.10`
|
||||
- Expected: `dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json`
|
||||
- Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--ip-whitelist` = `192.0.2.10`
|
||||
|
||||
#### `dws devapp permission list`
|
||||
|
||||
|
||||
@@ -1194,7 +1194,7 @@
|
||||
**devapp_devapp_member_list_001** ✅ PASS
|
||||
|
||||
- Prompt: 查看开放平台应用 UNIFIED_APP_ID 的成员
|
||||
- Expected: `dws devapp member list --app-id UNIFIED_APP_ID --format json`
|
||||
- Expected: `dws devapp member list --unified-app-id UNIFIED_APP_ID --format json`
|
||||
- Skill Reference: references/products/devapp.md
|
||||
- Command path: PASS (devapp member list)
|
||||
- Flags: PASS (1 flags validated)
|
||||
@@ -1202,7 +1202,7 @@
|
||||
**devapp_devapp_member_add_001** ✅ PASS
|
||||
|
||||
- Prompt: 给开放平台应用 UNIFIED_APP_ID 添加开发者成员 userId1,userId2,先预览
|
||||
- Expected: `dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json`
|
||||
- Expected: `dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json`
|
||||
- Skill Reference: references/products/devapp.md
|
||||
- Command path: PASS (devapp member add)
|
||||
- Flags: PASS (3 flags validated)
|
||||
@@ -1210,7 +1210,7 @@
|
||||
**devapp_devapp_member_remove_001** ✅ PASS
|
||||
|
||||
- Prompt: 已确认,从开放平台应用 UNIFIED_APP_ID 移除开发者成员 userId1
|
||||
- Expected: `dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json`
|
||||
- Expected: `dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json`
|
||||
- Skill Reference: references/products/devapp.md
|
||||
- Command path: PASS (devapp member remove)
|
||||
- Flags: PASS (4 flags validated)
|
||||
@@ -1218,7 +1218,7 @@
|
||||
**devapp_devapp_security_config_001** ✅ PASS
|
||||
|
||||
- Prompt: 给开放平台应用 UNIFIED_APP_ID 配置 IP 白名单 192.0.2.10,先预览
|
||||
- Expected: `dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json`
|
||||
- Expected: `dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json`
|
||||
- Skill Reference: references/products/devapp.md
|
||||
- Command path: PASS (devapp security config)
|
||||
- Flags: PASS (2 flags validated)
|
||||
|
||||
Reference in new issue
Block a user