# Vai trò và phân quyền

> Quản lý vai trò (role) và gán quyền hạn (permission) cho tài khoản, kiểm soát truy cập các chức năng trên hệ thống.

**Quyền truy cập:** Cần quyền `admin`, **Xem danh sách vai trò**, **Tạo vai trò**, **Cập nhật vai trò**, **Xoá vai trò** **Điều hướng:** `Tài khoản > Vai trò` hoặc `/manage/account/role`

***

## Tổng quan

Hệ thống phân quyền của Noova dựa trên mô hình RBAC (Role-Based Access Control). Mỗi vai trò chứa một tập hợp các quyền (permission) xác định chức năng mà người dùng được phép truy cập. Quản trị viên có thể tạo các vai trò tùy chỉnh, gán quyền cho vai trò, và gán vai trò cho tài khoản.

Ngoài vai trò, hệ thống còn hỗ trợ **chính sách truy cập** -- gói quyền tạm thời có thể đặt thời hạn, phù hợp cho nhân viên tạm thời hoặc dự án đặc biệt. Xem chi tiết tại [Chính sách truy cập](https://docs.noova.vn/truyen-thong-va-he-thong/23-tai-khoan/chinh-sach-truy-cap).

***

## Vai trò mặc định

Khi khởi tạo hệ thống lần đầu, 9 vai trò mặc định được tạo tự động với phân quyền và phạm vi tương ứng:

| Nhóm      | Vai trò               | Mô tả                                          | Phạm vi mặc định         |
| --------- | --------------------- | ---------------------------------------------- | ------------------------ |
| Hệ thống  | **Admin**             | Quản trị viên -- toàn quyền, không thể xoá/sửa | Toàn bộ                  |
| Nhân sự   | **Giám đốc nhân sự**  | Quản lý toàn bộ hoạt động nhân sự              | Toàn bộ tổ chức          |
| Nhân sự   | **Quản lý nhân sự**   | Vận hành nhân sự hàng ngày                     | Toàn bộ tổ chức          |
| Nhân sự   | **Nhân viên nhân sự** | Xử lý nghiệp vụ nhân sự cơ bản                 | Đơn vị phụ trách         |
| Quản lý   | **Trưởng bộ phận**    | Quản lý đơn vị và đơn vị con                   | Đơn vị và con            |
| Quản lý   | **Trưởng nhóm**       | Quản lý nhóm trực tiếp                         | Nhóm trực tiếp           |
| Nhân viên | **Nhân viên**         | Nhân viên chính thức                           | Chỉ của bản thân         |
| Bên ngoài | **Giảng viên ngoài**  | Giảng viên không thuộc tổ chức                 | Chỉ khoá học được gán    |
| Bên ngoài | **Học viên ngoài**    | Học viên không thuộc tổ chức                   | Chỉ khoá học đã ghi danh |
| Bên ngoài | **Khách**             | Truy cập nội dung công khai                    | Không có quyền           |

**Phạm vi** xác định dữ liệu mà người dùng được phép xem hoặc quản lý:

| Phạm vi              | Mô tả                                                   |
| -------------------- | ------------------------------------------------------- |
| **Chỉ của bản thân** | Chỉ dữ liệu liên quan đến chính mình                    |
| **Nhóm trực tiếp**   | Dữ liệu của nhân viên mà mình quản lý trực tiếp         |
| **Đơn vị phụ trách** | Dữ liệu trong đơn vị được gán                           |
| **Toàn bộ tổ chức**  | Dữ liệu toàn hệ thống                                   |
| **Tuỳ chỉnh**        | Phạm vi do quản trị viên cấu hình riêng cho từng module |

> **Lưu ý:** Quản trị viên có thể thay đổi phạm vi mặc định và điều chỉnh phạm vi riêng cho từng module trong vai trò.

***

## Danh sách quyền theo module

Hệ thống chia quyền thành nhiều module. Dưới đây là các module quyền chính:

### Quyền quản lý tài khoản (USER)

| Mã quyền                   | Tên                     | Mô tả                                |
| -------------------------- | ----------------------- | ------------------------------------ |
| USER\_LIST\_VIEW           | Xem danh sách tài khoản | Xem danh sách tất cả tài khoản       |
| USER\_ONE\_VIEW            | Xem chi tiết tài khoản  | Xem thông tin chi tiết một tài khoản |
| USER\_COUNT                | Đếm số lượng tài khoản  | Xem số lượng tài khoản               |
| USER\_SEARCH               | Tìm kiếm tài khoản      | Tìm kiếm tài khoản theo tiêu chí     |
| USER\_UPDATE\_PROFILE      | Cập nhật hồ sơ          | Sửa thông tin hồ sơ tài khoản        |
| USER\_UPDATE\_PASSWORD     | Đổi mật khẩu            | Đặt lại mật khẩu cho tài khoản       |
| USER\_UPDATE\_INFOR\_LOGIN | Đổi thông tin đăng nhập | Thay đổi username và email đăng nhập |
| USER\_UPDATE\_MY\_COURSE   | Quản lý khóa học        | Thêm/xóa khóa học cho tài khoản      |
| USER\_CHECK\_ROLE          | Kiểm tra vai trò        | Xem vai trò của tài khoản            |
| USER\_UPDATE\_ROLE         | Cập nhật vai trò        | Thay đổi vai trò của tài khoản       |
| USER\_UPDATE\_VERIFIED     | Xác minh tài khoản      | Xác minh hoặc bỏ xác minh email      |
| USER\_UPDATE\_BLOCKED      | Khóa tài khoản          | Khóa hoặc mở khóa tài khoản          |
| USER\_CREATE               | Tạo tài khoản           | Tạo tài khoản mới                    |
| USER\_DELETE               | Xóa tài khoản           | Xóa tài khoản khỏi hệ thống          |

### Quyền quản lý vai trò (ROLE)

| Mã quyền           | Tên                       | Mô tả                                 |
| ------------------ | ------------------------- | ------------------------------------- |
| ROLE\_LIST\_VIEW   | Xem danh sách vai trò     | Xem tất cả vai trò trên hệ thống      |
| ROLE\_ONE\_VIEW    | Xem chi tiết vai trò      | Xem chi tiết một vai trò và các quyền |
| ROLE\_CREATE       | Tạo vai trò               | Tạo vai trò mới                       |
| ROLE\_UPDATE       | Cập nhật vai trò          | Sửa vai trò và quyền của vai trò      |
| ROLE\_DELETE       | Xóa vai trò               | Xóa vai trò khỏi hệ thống             |
| ROLE\_UPDATE\_USER | Gán vai trò cho tài khoản | Chọn vai trò cho tài khoản cụ thể     |

### Các module quyền khác

Hệ thống còn nhiều module quyền bổ sung tùy theo tính năng được kích hoạt:

* **ORGANIZATION:** Quyền quản lý tổ chức, đơn vị, phòng ban
* **TRAINING:** Quyền quản lý đào tạo, chương trình, hoạt động
* **COURSE:** Quyền quản lý khóa học
* **QUIZ:** Quyền quản lý bài kiểm tra
* **ENROLLMENT:** Quyền quản lý ghi danh
* **RECRUITMENT:** Quyền quản lý tuyển dụng
* **PERFORMANCE:** Quyền quản lý đánh giá hiệu suất
* **TIME\_ATTENDANCE:** Quyền quản lý chấm công
* **COMPENSATION:** Quyền quản lý lương thưởng
* **AI:** Quyền quản lý tính năng AI
* **AUTOMATION:** Quyền quản lý tự động hóa
* **MEETING:** Quyền quản lý cuộc họp
* **SUCCESSION:** Quyền quản lý kế nhiệm
* **ENGAGEMENT:** Quyền quản lý gắn kết
* **COMMUNITY:** Quyền quản lý cộng đồng
* **CAREER\_PATHING:** Quyền quản lý nghề nghiệp
* **PAYROLL:** Quyền quản lý bảng lương

***

## Tạo vai trò mới

### Các bước

1. Truy cập `Tài khoản > Vai trò`.
2. Nhấn nút **Tạo vai trò**.
3. Nhập tên vai trò.
4. Chọn các quyền cần gán cho vai trò từ danh sách quyền.
5. Nhấn **Lưu** để tạo vai trò.

***

## Gán vai trò cho tài khoản

### Các bước

1. Truy cập trang cài đặt của tài khoản cần gán vai trò.
2. Tìm phần quản lý vai trò.
3. Chọn vai trò cần gán từ danh sách.
4. Lưu thay đổi.

Hoặc từ trang quản lý vai trò, chọn vai trò và thêm tài khoản vào vai trò đó.

***

## Phụ thuộc quyền

Một số quyền có phụ thuộc (dependency). Khi gán quyền, các quyền phụ thuộc sẽ tự động được yêu cầu:

* **Xem chi tiết một tài khoản** phụ thuộc **Xem danh sách tài khoản**
* **Cập nhật thông tin hồ sơ** phụ thuộc **Xem chi tiết một tài khoản**
* **Xoá tài khoản** phụ thuộc **Xem chi tiết một tài khoản**
* **Tạo vai trò** phụ thuộc **Xem danh sách vai trò**
* **Cập nhật vai trò** phụ thuộc **Xem chi tiết một vai trò**
* **Xoá vai trò** phụ thuộc **Xem chi tiết một vai trò**

***

## Lưu ý

* Vai trò `admin` có toàn quyền trên hệ thống, không cần gán thêm quyền.
* Không thể xóa vai trò đang được gán cho tài khoản (cần gỡ vai trò khỏi tất cả tài khoản trước).
* Các module quyền chỉ hiển thị khi tính năng tương ứng được kích hoạt (ví dụ: quyền Tuyển dụng chỉ hiện khi bật feature flag `__recruitment`).
* Thay đổi quyền có hiệu lực ngay lập tức sau khi tài khoản đăng nhập lại.

***

## Xem thêm

* [Quản lý tài khoản](https://docs.noova.vn/truyen-thong-va-he-thong/23-tai-khoan/quan-ly-tai-khoan) -- Quản lý danh sách tài khoản
* [Nhóm tài khoản](https://docs.noova.vn/truyen-thong-va-he-thong/23-tai-khoan/nhom-tai-khoan) -- Quản lý nhóm tài khoản
