Tóm tắt
Trước đây ai có role Wework cũng thấy và mở được dự án cá nhân (isPersonal: true) của người khác. Từ WEWORK-032, dự án
cá nhân chỉ hiện với thành viên của nó (thường là người tạo), kể cả admin/owner cũng không ngoại lệ. Người không phải
thành viên gọi vào dự án đó hoặc task của nó sẽ nhận 404 như thể không tồn tại.
Chi tiết
GET /projectskhông còn trả dự án cá nhân của người khác. Dự án cá nhân của chính mình và mọi dự án không cá nhân vẫn trả như cũ.- Với dự án cá nhân mà user không phải thành viên, mọi route sau trả
404 common.entity_not_found:GET/PATCH /projects/:id,GET/POST /projects/:id/members,DELETE /projects/:id/members/:userId,GET/POST /projects/:id/tasks,GET/PATCH/DELETE /tasks/:id,POST /tasks/:id/checklist-items,GET/POST /tasks/:id/comments,PATCH/DELETE /checklist-items/:id. - Trả 404 (không phải 403) là cố ý, để không lộ việc dự án tồn tại.
- Không đổi shape request/response, không thêm field, không đổi quyền (action). Dự án không cá nhân chưa bị giới hạn theo thành viên; việc đó thuộc WEWORK-033 (đang chờ PO chốt) và sẽ có note riêng.
Contract (trước → sau)
| Trước | Sau | |
|---|---|---|
GET /projects |
mọi dự án trong tổ chức | bỏ dự án cá nhân mà user không phải thành viên |
Route theo :id của dự án cá nhân / task / checklist trong đó (người ngoài) |
200 |
404 common.entity_not_found |
Việc bên nhận cần làm
- FE: kiểm tra màn hình mở dự án/task theo link (vd link trong thông báo) xử lý
404gọn gàng (thông báo "không tồn tại hoặc không có quyền"), không vỡ trang. - FE: nếu có chỗ lọc/ẩn dự án cá nhân ở client, có thể bỏ vì BE đã lọc.
Cách kiểm tra
User A tạo POST /projects { "name": "Việc riêng", "isPersonal": true }. User B (có role Wework, kể cả owner):
GET /projects không có dự án đó, GET /projects/<id> → 404. User A vẫn mở bình thường.