mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-30 00:06:38 +08:00
241 lines
3.6 KiB
Markdown
241 lines
3.6 KiB
Markdown
# Group & Permission Management API
|
|
|
|
Groups organize users and tunnels, with permissions controlling access.
|
|
|
|
## Tunnel Groups
|
|
|
|
### POST /api/v1/group/tunnel/list
|
|
|
|
List all tunnel groups.
|
|
|
|
**Request:** `{}`
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"data": [
|
|
{
|
|
"id": 1,
|
|
"name": "Premium-Tunnels",
|
|
"status": 1,
|
|
"tunnel_ids": [1, 2, 3],
|
|
"created_at": 1706659200000
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### POST /api/v1/group/tunnel/create
|
|
|
|
Create a tunnel group.
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"name": "Premium-Tunnels",
|
|
"status": 1
|
|
}
|
|
```
|
|
|
|
### POST /api/v1/group/tunnel/update
|
|
|
|
Update tunnel group.
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"id": 1,
|
|
"name": "VIP-Tunnels",
|
|
"status": 1
|
|
}
|
|
```
|
|
|
|
### POST /api/v1/group/tunnel/delete
|
|
|
|
Delete tunnel group.
|
|
|
|
**Request:**
|
|
```json
|
|
{"id": 1}
|
|
```
|
|
|
|
### POST /api/v1/group/tunnel/assign
|
|
|
|
Assign tunnels to a group.
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"groupId": 1,
|
|
"tunnelIds": [1, 2, 3]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## User Groups
|
|
|
|
### POST /api/v1/group/user/list
|
|
|
|
List all user groups.
|
|
|
|
**Request:** `{}`
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"data": [
|
|
{
|
|
"id": 1,
|
|
"name": "VIP-Users",
|
|
"status": 1,
|
|
"user_ids": [2, 3, 4],
|
|
"created_at": 1706659200000
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### POST /api/v1/group/user/create
|
|
|
|
Create a user group.
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"name": "VIP-Users",
|
|
"status": 1
|
|
}
|
|
```
|
|
|
|
### POST /api/v1/group/user/update
|
|
|
|
Update user group.
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"id": 1,
|
|
"name": "Premium-Users",
|
|
"status": 1
|
|
}
|
|
```
|
|
|
|
### POST /api/v1/group/user/delete
|
|
|
|
Delete user group.
|
|
|
|
**Request:**
|
|
```json
|
|
{"id": 1}
|
|
```
|
|
|
|
### POST /api/v1/group/user/assign
|
|
|
|
Assign users to a group.
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"groupId": 1,
|
|
"userIds": [2, 3, 4]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Permissions
|
|
|
|
Permissions link user groups to tunnel groups, allowing users in a user group to access tunnels in a tunnel group.
|
|
|
|
### POST /api/v1/group/permission/list
|
|
|
|
List all permissions.
|
|
|
|
**Request:** `{}`
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"code": 0,
|
|
"data": [
|
|
{
|
|
"id": 1,
|
|
"user_group_id": 1,
|
|
"user_group_name": "VIP-Users",
|
|
"tunnel_group_id": 1,
|
|
"tunnel_group_name": "Premium-Tunnels",
|
|
"created_at": 1706659200000
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### POST /api/v1/group/permission/assign
|
|
|
|
Create a permission (grant user group access to tunnel group).
|
|
|
|
**Request:**
|
|
```json
|
|
{
|
|
"userGroupId": 1,
|
|
"tunnelGroupId": 1
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
{"code": 0, "msg": "success", "data": {"id": 1}}
|
|
```
|
|
|
|
### POST /api/v1/group/permission/remove
|
|
|
|
Remove a permission.
|
|
|
|
**Request:**
|
|
```json
|
|
{"id": 1}
|
|
```
|
|
|
|
---
|
|
|
|
## Workflow: Set Up Group-Based Access
|
|
|
|
```bash
|
|
# 1. Create user group
|
|
curl -s -X POST "${FLVX_BASE_URL}/api/v1/group/user/create" \
|
|
-H "Authorization: ${TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name":"Standard-Users"}'
|
|
# Response: {"data":{"id":1}}
|
|
|
|
# 2. Create tunnel group
|
|
curl -s -X POST "${FLVX_BASE_URL}/api/v1/group/tunnel/create" \
|
|
-H "Authorization: ${TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"name":"Standard-Tunnels"}'
|
|
# Response: {"data":{"id":1}}
|
|
|
|
# 3. Add tunnels to tunnel group
|
|
curl -s -X POST "${FLVX_BASE_URL}/api/v1/group/tunnel/assign" \
|
|
-H "Authorization: ${TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"groupId":1,"tunnelIds":[1,2,3]}'
|
|
|
|
# 4. Add users to user group
|
|
curl -s -X POST "${FLVX_BASE_URL}/api/v1/group/user/assign" \
|
|
-H "Authorization: ${TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"groupId":1,"userIds":[2,3,4]}'
|
|
|
|
# 5. Grant permission (user group -> tunnel group)
|
|
curl -s -X POST "${FLVX_BASE_URL}/api/v1/group/permission/assign" \
|
|
-H "Authorization: ${TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"userGroupId":1,"tunnelGroupId":1}'
|
|
```
|
|
|
|
Now users 2, 3, 4 can access tunnels 1, 2, 3.
|