Skip to content

Phân quyền ​

Cloudflare Access quyết định ai vào được. Bảng users quyết định họ làm được gì.

Bốn vai trò ​

Vai tròMô hình chuẩnĐánh giá của BrandGhi chú
architect✅ Sửa✅ Mọi BrandEnterprise Architect
executive❌ Chỉ xem✅ Mọi BrandCEO / Chiến lược
brand_owner❌ Chỉ xem✅ Brand của mìnhChủ Brand
viewer❌❌Mặc định cho người chưa được cấp vai trò

PRD gốc mô tả bảy vai trò (thêm Capability Owner, Process Owner, Technology/Data Owner). Ba vai trò đó gắn với tầng Process và Application; hiện tại chúng được ghi bằng trường owner dạng văn bản trên từng đánh giá, quy trình, sản phẩm, feature và yêu cầu, chưa phải một vai trò đăng nhập riêng. Ba mặt phẳng của Conan1 dùng chung bốn vai trò này — không có vai trò mới.

Quyền theo mặt phẳng ​

Mặt phẳngTài nguyênAi được ghi
Compassmô hình chuẩn, applications, data-entities, technologiesarchitect
Compassđánh giá, processes, value-streams, initiatives, objectives, key-resultsarchitect, executive, brand_owner đúng Brand
Productsproducts, featuresarchitect, executive, brand_owner đúng Brand (canEditScope)
Productsapplication-urlsarchitect
Productsproduct-capabilitiesarchitect, executive
Requirementsrequirements, questions, decisions, evidence, releases, mọi endpoint riêng (trả lời, quyết, gợi ý AI, dải Liên quan)chỉ architect

Mặt phẳng Requirements là bộ nhớ quyết định của tổ chức, nên chỉ kiến trúc sư được ghi; executive và brand_owner đọc được toàn bộ. decided_by và answered_by luôn là email lấy từ Cloudflare Access — Worker đóng dấu, body không thể đặt.

Chế độ Xem / Sửa ​

Ngoài vai trò, giao diện còn có một công tắc Xem | Sửa ở góc trên bên phải, cạnh công tắc ngôn ngữ.

  • Mặc định luôn là Xem. Mỗi lần tải trang đều bắt đầu ở chế độ này — trạng thái không được ghi nhớ.
  • Ở chế độ Xem, mọi nút thêm, icon bút chì, nút kích hoạt và nút xoá đều biến mất trên toàn bộ màn hình. Người dùng chỉ đọc và bấm vào từng mục để xem chi tiết.
  • Người có vai trò viewer không nhìn thấy công tắc, vì họ không có gì để bật.

Cơ chế này được cài ở tầng store: canEditModel, canEditBrand() và canEditScope đều nhân thêm điều kiện editMode. Nhờ vậy một màn hình mới tự động tuân theo chế độ mà không cần viết thêm dòng nào — miễn là nó hỏi quyền qua ba cờ đó thay vì tự kiểm tra vai trò.

Vì sao mặc định chỉ đọc

Compass chủ yếu được dùng để đọc — xem bản đồ năng lực, tìm điểm yếu, chuẩn bị cho một cuộc họp. Sửa là việc hiếm và có chủ đích. Mặc định chỉ đọc giữ màn hình sạch và tránh sửa nhầm khi đang trình bày.

Cưỡng chế ở đâu ​

Quyền được kiểm tra ở Worker, không phải ở giao diện. Giao diện chỉ ẩn nút cho gọn; API vẫn trả 403 nếu ai đó gọi thẳng.

Công tắc Xem/Sửa cũng chỉ là giao diện — nó không phải một lớp bảo mật, mà là một lớp an toàn khi thao tác.

  • Sửa mô hình chuẩn → yêu cầu architect.
  • Sửa đánh giá → architect, executive, hoặc brand_owner đúng Brand.
  • Sửa sản phẩm, feature → cùng quy tắc với đánh giá; Worker tự điền brand_id từ bản ghi cha trước khi kiểm tra quyền, nên brand_owner không gắn được feature vào sản phẩm của Brand khác.
  • Ghi yêu cầu, câu hỏi, quyết định, bằng chứng, release → chỉ architect.

Thêm người dùng ​

sql
INSERT INTO users (email, name, role, brand_id)
VALUES ('nguoi@vidu.com', 'Tên', 'brand_owner', 'BRD-nemo12');

Người này còn phải nằm trong policy của Cloudflare Access, nếu không sẽ không vào được tới Worker.