sync/wework/2026-09-25-be-wework-personal-project-hidden.md · Xem trên GitHub

Dự án cá nhân của người khác không còn hiện/mở được (404)

Đang mở normal bugfix
Module
wework
Từ
BE
Người raise
ThaiThanhLuan
Ngày tạo
2026-09-25
Refs
WEWORK-032
Bên nhận
FE pendingMobile n/a

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 /projects khô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ý 404 gọ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.

Thảo luận