Chuyển tới nội dung chính

Ma trận phân quyền

Trang này quy định mỗi vai trò làm được gì. Đây là căn cứ để lập trình và để kiểm thử.

Nguyên tắc chung

Quyền được xác định bởi hai yếu tố kết hợp:

  1. Vai trò — Ban Giám hiệu, Trưởng phòng hay Nhân viên
  2. Phạm vi dữ liệu — được đụng tới công việc của ai
Vai tròPhạm vi dữ liệu
Ban Giám hiệuToàn trường
Trưởng phòngPhòng mình phụ trách
Nhân viênCông việc được giao cho mình

Một người có quyền làm một thao tác chỉ khi vai trò cho phép dữ liệu nằm trong phạm vi của họ.

Công việc

Thao tácBan Giám hiệuTrưởng phòngNhân viên
Xem danh sách công việcToàn trườngPhòng mìnhViệc của mình
Xem chi tiết một việcToàn trườngPhòng mìnhViệc của mình
Tạo việc mớiKhông
Sửa nội dung việcToàn trườngPhòng mìnhKhông
Giao người phụ tráchTrong phòng mìnhKhông
Chuyển giao lại người khácTrong phòng mìnhKhông
Đặt và sửa hạn hoàn thànhPhòng mìnhKhông
Đặt mức ưu tiênPhòng mìnhKhông
Nhận việc (Mới giao → Đang làm)Phòng mìnhViệc của mình
Trả lại để làm tiếp (Chờ xác nhận → Đang làm)Việc mình giaoViệc mình giaoKhông
Chuyển sang Chờ xác nhậnPhòng mìnhViệc của mình
Xác nhận Hoàn thànhViệc mình giaoViệc mình giaoKhông
Huỷ việcPhòng mìnhKhông
Bình luậnToàn trườngPhòng mìnhViệc của mình
Đính kèm tệpToàn trườngPhòng mìnhViệc của mình
Xoá vĩnh viễnKhôngKhôngKhông

:::note Vì sao không ai xoá được Theo quy tắc BR-03, công việc chỉ được huỷ chứ không xoá. Phần mềm không có chức năng xoá vĩnh viễn cho bất kỳ vai trò nào. :::

Tài khoản người dùng

Thao tácBan Giám hiệuTrưởng phòngNhân viên
Xem danh sách tài khoảnToàn trườngPhòng mìnhKhông
Tạo tài khoản mớiKhôngKhông
Sửa thông tin tài khoảnKhôngKhông
Gán và đổi vai tròKhôngKhông
Khoá tài khoảnKhôngKhông
Đặt lại mật khẩu cho người khácKhôngKhông
Đổi mật khẩu của mình

:::note Vì sao chỉ Ban Giám hiệu quản lý tài khoản Bản dùng thử chỉ cho Ban Giám hiệu tạo, sửa và khoá tài khoản. Trưởng phòng không có quyền này.

Lý do: quy mô một văn phòng thì số lần tạo tài khoản rất ít, gom về một đầu mối là đủ và tránh được nguy cơ nâng quyền ngoài kiểm soát. Trưởng phòng cần thêm người thì đề nghị qua kênh hành chính bình thường.

Nếu sau này mở rộng ra nhiều phòng ban và việc này thành nút thắt, có thể thêm vai trò "Người quản trị" — thêm một dòng vào bảng vai trò, không phải sửa cấu trúc dữ liệu. :::

Báo cáo và màn hình theo dõi

Thao tácBan Giám hiệuTrưởng phòngNhân viên
Xem màn hình tổng quanToàn trườngPhòng mìnhKhông
Xem danh sách việc trễ hạnToàn trườngPhòng mìnhViệc của mình
Xem màn hình việc trễ hạn của phòngKhông
Xem màn hình việc của tôi
Dùng bộ lọcToàn trườngPhòng mìnhViệc của mình
Xuất báo cáo ExcelToàn trườngPhòng mìnhKhông

Các trường hợp đặc biệt

Những tình huống dưới đây dễ gây tranh cãi khi lập trình, nên quy định rõ.

Tình huốngXử lý
Trưởng phòng tự giao việc cho chính mìnhĐược. Khi đó vừa là người giao vừa là người phụ trách, và tự xác nhận hoàn thành được.
Ban Giám hiệu giao việc thẳng cho nhân viên, không qua trưởng phòngĐược. Khi đó Ban Giám hiệu là người giao việc và là người xác nhận hoàn thành.
Nhân viên được chuyển sang phòng khácViệc cũ vẫn thuộc phòng cũ. Trưởng phòng mới không thấy việc cũ của người đó.
Tài khoản bị khoá nhưng còn việc chưa xongViệc vẫn còn, hiển thị tên người phụ trách kèm ghi chú đã khoá. Trưởng phòng phải chuyển giao lại cho người khác.
Nhân viên kiêm nhiệm hai phòngGiao diện bản dùng thử chỉ cho chọn một phòng. Cấu trúc dữ liệu đã hỗ trợ sẵn nhiều phòng, mở ra sau này không cần chuyển đổi dữ liệu.

:::note Kiêm nhiệm được xử lý thế nào Bản dùng thử quy định mỗi người thuộc đúng một phòng, vì đơn giản hơn cho người dùng và đủ cho phạm vi Văn phòng Hành chính.

Nhưng cơ sở dữ liệu không khoá cứng điều đó: bảng nối user_departments cho phép một người thuộc nhiều phòng với vai trò khác nhau. Bản dùng thử chỉ tạo một dòng cho mỗi người. Khi cần hỗ trợ kiêm nhiệm thật, chỉ mở khoá ở giao diện và thêm dòng — dữ liệu cũ giữ nguyên.

Xem Mô hình dữ liệu. :::

Cách kiểm tra khi lập trình

Mỗi lần xử lý một yêu cầu từ người dùng, phần mềm phải kiểm tra theo thứ tự:

  1. Người này đã đăng nhập chưa
  2. Vai trò của họ có được phép làm thao tác này không
  3. Dữ liệu họ đang đụng tới có nằm trong phạm vi của họ không

Thiếu một trong ba bước là lỗ hổng. Đặc biệt bước 3 hay bị bỏ sót: nhân viên A có thể sửa địa chỉ trên trình duyệt để mở việc của nhân viên B, nên phải kiểm tra ở phía máy chủ chứ không chỉ ẩn nút trên giao diện.