# CloudCC 权限集 CLI 命令说明

命令格式为 **`cloudcc <动作> permission …`**（动作即下表「操作」列）。

## 支持的命令

| 操作 | 说明 |
|------|------|
| `get` | 查询权限集列表 |
| `assign` | 查看权限集已分配的用户 |
| `add` | 为权限集添加分配用户 |
| `remove` | 从权限集移除分配用户 |

## CLI 命令详解

### 查询权限集列表

```bash
cloudcc get permission <path> [viewId] [page] [pageSize] [searchKeyWord]
```

**参数说明：**

| 参数 | 必填 | 说明 |
|------|------|------|
| `path` | 否 | 项目路径，`.` 表示当前目录，默认为当前目录 |
| `viewId` | 否 | 视图ID，不传则自动获取 |
| `page` | 否 | 页码，默认为 1 |
| `pageSize` | 否 | 每页数量，默认为 100000 |
| `searchKeyWord` | 否 | 搜索关键词 |

**示例：**

```bash
# Get all permission sets
cloudcc get permission .

# Get permission sets with a specified view
cloudcc get permission . "00000000000000000000"

# Search permission sets
cloudcc get permission . "" 1 100 "Test"
```

**输出示例：**

```
Found 17 permission sets:

  ID                    Name             License           System Admin
  --------------------  ---------------  ----------------  ----------
  aabbudgeting2024ACgL  Profit Cloud Standard Permission Set  Budgeting         Yes
  cac202530FE035CHCFGi  cloudcc222       CloudCC User      No
  cac2025F039C6A5DQGrt  TestMFA22        CloudCC User      No
  cac20258F0E4ABBnTxwi  Ancient Saying           CloudCC User      No
  ...
```

### 查看已分配用户

```bash
cloudcc assign permission <path> <permsetId>
```

**参数说明：**

| 参数 | 必填 | 说明 |
|------|------|------|
| `path` | 否 | 项目路径，`.` 表示当前目录，默认为当前目录 |
| `permsetId` | 是 | 权限集ID |

**示例：**

```bash
# View users assigned to a permission set
cloudcc assign permission . "cac20258F0E4ABBnTxwi"
```

**输出示例：**

```
Permission set: Ancient Saying
ID: cac20258F0E4ABBnTxwi

6 users assigned:

  User ID                 Name      Login Name           Profile           Role
  --------------------  --------  --------------------  ----------------  ----------------
  00520263DB1540FTPmXK  Re-registered User  421865903teet@qq.com  CloudCC Partner Profile  Partner User
  005202652FF2FA8dltk1  autoRow    autoTest@cloudcc.com  System Administrator        Test
  ...
```

### 添加分配用户

```bash
cloudcc add permission <path> <permsetId> [userIds...]
```

**参数说明：**

| 参数 | 必填 | 说明 |
|------|------|------|
| `path` | 否 | 项目路径，`.` 表示当前目录，默认为当前目录 |
| `permsetId` | 是 | 权限集ID |
| `userIds` | 否 | 要分配的用户ID列表，不传则进入交互式选择 |

**示例：**

```bash
# Select users interactively for assignment
cloudcc add permission . "cac20258F0E4ABBnTxwi"

# Specify one user ID directly for assignment
cloudcc add permission . "cac20258F0E4ABBnTxwi" "00520260C00C6FEfsMnT"

# Specify multiple user IDs directly for assignment (separate with spaces)
cloudcc add permission . "cac20258F0E4ABBnTxwi" "00520260C00C6FEfsMnT" "0052026C0A60504jNcbV"
```

**交互式选择模式：**

```
Fetching user list...

? Select users to assign (space to select, enter to confirm):
 ❯◯ John Zhang (zhangsan@example.com) - 00520260C00C6FEfsMnT
  ◯ Lisa Li (lisi@example.com) - 0052026C0A60504jNcbV
  ◯ Mark Wang (wangwu@example.com) - 0052026D0A60504jNcbW
(Move up and down to reveal more choices)

Assigning users to permission set cac20258F0E4ABBnTxwi 2 users...

✓ Users assigned successfully
  Permission Set ID: cac20258F0E4ABBnTxwi
  Assigned User Count: 2
```

### 移除分配用户

```bash
cloudcc remove permission <path> <permsetId> [userIds...]
```

**参数说明：**

| 参数 | 必填 | 说明 |
|------|------|------|
| `path` | 否 | 项目路径，`.` 表示当前目录，默认为当前目录 |
| `permsetId` | 是 | 权限集ID |
| `userIds` | 否 | 要移除的用户ID列表，不传则进入交互式选择 |

**示例：**

```bash
# Select users interactively for removal
cloudcc remove permission . "cac20258F0E4ABBnTxwi"

# Specify one user ID directly for removal
cloudcc remove permission . "cac20258F0E4ABBnTxwi" "00520260C00C6FEfsMnT"

# Specify multiple user IDs directly for removal (separate with spaces)
cloudcc remove permission . "cac20258F0E4ABBnTxwi" "00520260C00C6FEfsMnT" "0052026C0A60504jNcbV"
```

**交互式选择模式：**

```
Fetching assigned users...

? Select users to remove (space to select, enter to confirm):
 ❯◯ John Zhang (zhangsan@example.com) - 00520260C00C6FEfsMnT
  ◯ Lisa Li (lisi@example.com) - 0052026C0A60504jNcbV
(Move up and down to reveal more choices)

? Remove 2 users from the permission set? (y/N) y

Removing users from permission set cac20258F0E4ABBnTxwi 2 users...

✓ Users removed successfully
  Permission Set ID: cac20258F0E4ABBnTxwi
  Removed User Count: 2
```

## 完整使用流程示例

```bash
# 1. View all permission sets
cloudcc get permission .

# 2. View users assigned to a permission set
cloudcc assign permission . "cac20258F0E4ABBnTxwi"

# 3. Add users to a permission set (interactive selection)
cloudcc add permission . "cac20258F0E4ABBnTxwi"

# 4. View assigned users again to confirm the assignment succeeded
cloudcc assign permission . "cac20258F0E4ABBnTxwi"

# 5. Remove some users (interactive selection)
cloudcc remove permission . "cac20258F0E4ABBnTxwi"
```

## 数据字段说明

### 权限集对象字段

| 字段名 | 类型 | 说明 |
|--------|------|------|
| `id` | string | 权限集唯一标识 |
| `name` | string | 权限集名称 |
| `licence` | string | 许可证类型 |
| `sysadmin` | string | 是否为系统管理员权限（"1"表示是，"0"表示否） |

### 用户对象字段

| 字段名 | 类型 | 说明 |
|--------|------|------|
| `id` | string | 用户唯一标识 |
| `name` | string | 用户姓名 |
| `loginname` | string | 登录名（邮箱） |
| `profilename` | string | 简档名称 |
| `profileid` | string | 简档ID |
| `rolename` | string | 角色名称 |
| `roleid` | string | 角色ID |
| `alias` | string | 别名 |

## 相关 API 接口

| 接口 | 说明 |
|------|------|
| `POST /api/permissionGroup/queryPermsetsList` | 获取权限集视图列表 |
| `POST /api/permissionGroup/listAJAX` | 查询权限集列表 |
| `POST /api/permissionGroup/queryUserlistBypermsetsid` | 查询权限集已分配用户 |
| `POST /api/permissionGroup/addUsersetup` | 为权限集添加用户 |
| `POST /api/permissionGroup/deleteUsersetup` | 从权限集移除用户 |
| `POST /api/usermange/queryUser` | 获取用户视图 |
| `POST /api/usermange/queryUserList` | 查询用户列表 |
