Chuyển tới nội dung chính
Phiên bản: 1.0

Phân quyền Board — tra cứu đầy đủ

Nguyên tắc nền: role chỉ đến từ bảng space_members. Không header nào, không token nào nâng quyền được. Không có bản ghi membership → 403, kể cả GET.

viewer < member < admin < owner

Ma trận quyền theo hành động

Hành độngAPIQuyền tối thiểuRàng buộc thêm
Xem Space, task, wiki, plan, groupGET /api/…viewer
Tạo / sửa / xoá taskPOST·PATCH·DELETE /api/tasks*member
Tạo task hàng loạtPOST /api/tasks/batchmemberKiểm quyền ở mọi Space được tham chiếu
Chạy / dừng agentPOST /api/tasks/:id/run·stopmember
Tạo & sửa kế hoạchPOST·PATCH /api/plans*member
Apply PlanPOST /api/plans/:id/applymember
Tạo / chạy Task GroupPOST /api/groups*member
Ghi Wiki draftPOST /api/wiki/draftsmember
Approve & MergePOST /api/tasks/:id/approveadmin⚠️ Bắt buộc actor.type === 'human'
Request Changes / ReworkPOST /api/tasks/:id/reworkadmin⚠️ Bắt buộc actor.type === 'human'
Sửa cấu hình SpacePATCH·DELETE /api/projects/:idowner
Thêm / xoá thành viênPOST·DELETE /api/spaces/:id/membersownerKhông xoá được owner cuối cùng (409)
Tạo Space mớiPOST /api/projects(chỉ cần đăng nhập)Người tạo tự động thành owner
Route chưa khai báo trong AUTHZ_RULES → 403

Mặc định là chặn, không phải cho qua. Thêm endpoint mới mà quên khai báo rule là endpoint đó không dùng được — đây là chủ ý.

Quản lý thành viên

# Xem danh sách
curl http://<host>/api/spaces/<spaceId>/members

# Thêm / đổi role
curl -X POST http://<host>/api/spaces/<spaceId>/members \
-H 'Content-Type: application/json' \
-d '{"email":"bob@corp.com","role":"member"}'

# Xoá
curl -X DELETE http://<host>/api/spaces/<spaceId>/members/bob@corp.com

Mất hết quyền quản trị? Đặt AGENTBOARD_BOOTSTRAP_OWNERS=you@corp.com rồi restart server. Lệnh grant là idempotent — vừa là đường khởi tạo lần đầu, vừa là đường break-glass. Chi tiết: Tạo Space & quản thành viên.

Vì sao approve cần human?

Xem Vì sao Human Gate không bypass được.