Hướng dẫn Quản lý Người dùng & Nhóm quyền
Tổng quan
Hệ thống quản lý người dùng cho phép tạo tài khoản, phân quyền chi tiết cho từng người dùng hoặc theo nhóm. Hỗ trợ quản lý nhiều cấp quyền hạn từ quản trị viên đến nhân viên thường.
Tính năng chính:
✅ Quản lý tài khoản người dùng
✅ Phân nhóm người dùng
✅ Phân quyền chi tiết theo module
✅ Kế thừa quyền từ nhóm
✅ Ghi log tất cả thao tác
✅ Quản lý trạng thái (Active/Inactive)
Cấu trúc phân quyền:
Nhóm người dùng (User Group)
├── Quyền của nhóm (Group Permissions)
└── Người dùng (Users)
└── Quyền cá nhân (User Permissions)
→ Kết hợp với quyền nhóm
Quan hệ:
- Một người dùng thuộc về một nhóm (hoặc không thuộc nhóm nào)
- Quyền cuối cùng = Quyền nhóm + Quyền cá nhân
Quản lý Nhóm người dùng
Truy cập quản lý nhóm
Menu: Hệ thống > Nhóm người dùng
Tạo nhóm người dùng mới
Bước 1: Click "THÊM MỚI"
Bước 2: Điền thông tin cơ bản
┌─── Thông tin nhóm ──────────────────────┐
│ │
│ Tên nhóm*: Quản lý bán hàng │
│ │
│ Mô tả: Nhóm quản lý các chức │
│ năng bán hàng và kho │
│ │
└─────────────────────────────────────────┘
Bước 3: Phân quyền cho nhóm
Danh sách module và quyền:
┌─── Phân quyền ──────────────────────────┐
│ │
│ 📊 Dashboard │
│ ☑ Xem (view) │
│ │
│ 👥 Người dùng │
│ ☐ Xem (view) │
│ ☐ Thêm (add) │
│ ☐ Sửa (edit) │
│ ☐ Xóa (delete) │
│ │
│ 📦 Sản phẩm │
│ ☑ Xem (view) │
│ ☑ Thêm (add) │
│ ☑ Sửa (edit) │
│ ☐ Xóa (delete) │
│ │
│ 🎫 Gói bán │
│ ☑ Xem (view) │
│ ☑ Thêm (add) │
│ ☑ Sửa (edit) │
│ ☐ Xóa (delete) │
│ │
│ 📅 Đặt chỗ │
│ ☑ Xem (view) │
│ ☑ Thêm (add) │
│ ☑ Sửa (edit) │
│ ☐ Xóa (delete) │
│ │
│ 💰 Thanh toán │
│ ☑ Xem (view) │
│ ☑ Thêm (add) │
│ ☐ Hoàn tiền (refund) │
│ │
└──────────────────────────────────────────┘
Bước 4: Lưu nhóm
Click "Thêm mới" để lưu
Ví dụ các nhóm thường dùng
1. Nhóm Quản trị viên (Admin)
Tên: Quản trị viên
Mô tả: Quyền toàn bộ hệ thống
Quyền:
✅ Tất cả module: view, add, edit, delete
✅ Quản lý người dùng & nhóm
✅ Cấu hình hệ thống
✅ Xem tất cả báo cáo
✅ Quản lý đại lý
2. Nhóm Quản lý bán hàng
Tên: Quản lý bán hàng
Mô tả: Quản lý sản phẩm, gói bán, đặt chỗ
Quyền:
✅ Dashboard: view
✅ Sản phẩm: view, add, edit
✅ Gói bán: view, add, edit
✅ Đặt chỗ: view, add, edit
✅ Thanh toán: view, add
✅ Báo cáo bán hàng: view
❌ Người dùng: không có quyền
❌ Cấu hình: không có quyền
3. Nhóm Nhân viên bán hàng
Tên: Nhân viên bán hàng
Mô tả: Nhân viên quầy, chỉ bán hàng
Quyền:
✅ Dashboard: view
✅ Sản phẩm: view
✅ Gói bán: view
✅ Đặt chỗ: view, add
✅ Thanh toán: view, add
✅ Khách hàng: view, add, edit
❌ Báo cáo: không có quyền
❌ Cấu hình: không có quyền
❌ Xóa bất cứ thứ gì
4. Nhóm Kế toán
Tên: Kế toán
Mô tả: Quản lý thanh toán và báo cáo tài chính
Quyền:
✅ Dashboard: view
✅ Đặt chỗ: view
✅ Thanh toán: view, add, edit, refund
✅ Hóa đơn: view, export
✅ Báo cáo thanh toán: view, export
✅ Báo cáo công nợ: view
❌ Sản phẩm: không có quyền
❌ Người dùng: không có quyền
5. Nhóm Kho
Tên: Nhân viên kho
Mô tả: Quản lý sản phẩm và nhập xuất kho
Quyền:
✅ Dashboard: view
✅ Sản phẩm: view, add, edit
✅ Danh mục SP: view, add, edit
✅ Đơn vị tính: view, add
✅ Nhập kho: view, add
✅ Xuất kho: view, add
❌ Gói bán: không có quyền
❌ Thanh toán: không có quyền
❌ Báo cáo tài chính: không có quyền
Quản lý Người dùng
Truy cập quản lý người dùng
Menu: Hệ thống > Người dùng
Tạo người dùng mới
Bước 1: Click "THÊM MỚI"
Bước 2: Điền thông tin tài khoản
┌─── Thông tin tài khoản ─────────────────┐
│ │
│ Tên đăng nhập*: nguyen.van.a │
│ (Username) - Dùng để đăng nhập │
│ │
│ Tên hiển thị*: Nguyễn Văn A │
│ - Hiển thị trên hệ │
│ thống │
│ │
│ Email: a.nguyen@thinksoft.vn │
│ - Tùy chọn │
│ │
│ Mật khẩu*: •••••••• │
│ - Tối thiểu 6 ký tự │
│ │
│ Nhập lại MK*: •••••••• │
│ │
└─────────────────────────────────────────┘
Bước 3: Chọn nhóm người dùng
┌─── Phân nhóm ───────────────────────────┐
│ │
│ Nhóm người dùng: │
│ [Dropdown] Nhân viên bán hàng │
│ │
│ → Người dùng sẽ kế thừa quyền từ nhóm │
│ │
└─────────────────────────────────────────┘
Bước 4: Thiết lập quyền cá nhân (tùy chọn)
Nếu muốn thêm/bớt quyền so với nhóm:
┌─── Quyền cá nhân (Tùy chọn) ────────────┐
│ │
│ Mặc định: Kế thừa từ nhóm │
│ │
│ Tùy chỉnh: │
│ ☑ Cho phép xuất báo cáo │
│ ☑ Cho phép hoàn tiền (refund) │
│ ☐ Cho phép xóa đặt chỗ │
│ │
└─────────────────────────────────────────┘
Quy tắc kết hợp quyền:
- Nếu nhóm có quyền → Người dùng có quyền
- Nếu nhóm không có quyền → Check quyền cá nhân
- Quyền cuối cùng = Quyền nhóm OR Quyền cá nhân
Bước 5: Lưu người dùng
Click "Thêm mới"
Sửa thông tin người dùng
1. Sửa thông tin cơ bản
1. Tìm người dùng cần sửa
2. Click nút "Sửa" (icon bút)
3. Cập nhật thông tin:
- Tên hiển thị
- Email
- Nhóm người dùng
- Quyền cá nhân
4. Lưu
2. Đổi mật khẩu
1. Click "Sửa"
2. Nhập mật khẩu mới (nếu muốn đổi)
3. Nhập lại mật khẩu mới
4. Lưu
Lưu ý:
- Để trống nếu không đổi mật khẩu
- Mật khẩu mới tối thiểu 6 ký tự
3. Đổi nhóm người dùng
1. Click "Sửa"
2. Chọn nhóm mới từ dropdown
3. Lưu
→ Người dùng sẽ kế thừa quyền từ nhóm mới
Vô hiệu hóa người dùng
1. Tìm người dùng cần vô hiệu hóa
2. Click nút "Xóa" (icon thùng rác)
3. Xác nhận
Kết quả:
- Người dùng không thể đăng nhập
- Thông tin vẫn lưu trong hệ thống
- Có thể kích hoạt lại sau
Lưu ý: Hệ thống không XÓA VĨNH VIỄN người dùng, chỉ VÔ HIỆU HÓA (INACTIVE)
Hệ thống phân quyền
Cấu trúc phân quyền
Module.Permission
Ví dụ:
products.view- Xem danh sách sản phẩmproducts.add- Thêm sản phẩm mớiproducts.edit- Sửa sản phẩmproducts.delete- Xóa/vô hiệu hóa sản phẩm
Danh sách Modules
| Module | Mã | Mô tả |
|---|---|---|
| Trang chủ | dashboard | Dashboard và tổng quan |
| Người dùng | users | Quản lý tài khoản |
| Nhóm người dùng | user-groups | Quản lý nhóm |
| Khách hàng | customers | Quản lý khách hàng |
| Công ty | companies | Quản lý công ty |
| Sản phẩm | products | Quản lý sản phẩm/dịch vụ |
| Danh mục SP | product-categories | Danh mục sản phẩm |
| Đơn vị tính | units | Đơn vị tính (Cái, Ly, Kg...) |
| Gói bán | sale-packages | Gói bán hàng |
| Danh mục gói bán | sale-package-categories | Danh mục gói |
| Đại lý | agencies | Quản lý đại lý |
| Cấp đại lý | agency-levels | Cấp đại lý |
| Nhân viên | staffs | Quản lý nhân viên |
| Khu vực | areas | Khu vực địa lý |
| Thiết bị | devices | Thiết bị check-in/out |
| Loại thanh toán | payment-types | Hình thức thanh toán |
| Nhà hàng | restaurants | Quản lý nhà hàng |
| Khu vực NH | restaurant-area | Khu vực nhà hàng |
| Menu NH | restaurant-menu | Menu nhà hàng |
| Bàn NH | restaurant-table | Bàn nhà hàng |
| Combo NH | restaurant-combo | Combo nhà hàng |
| Điều khoản | usage-terms | Điều khoản sử dụng |
| Mẫu in | templates | Mẫu in vé, hóa đơn |
| Kết nối | connectors | Kết nối bên thứ 3 |
| Nhóm mã | code-groups | Nhóm mã vé |
| Mã | codes | Mã vé |
| Báo cáo thanh toán | payment-report | BC thanh toán |
| Báo cáo vé đã dùng | used-tickets-report | BC vé sử dụng |
| Danh sách chờ | waiting-list-report | BC danh sách chờ |
| Danh sách check-in | checkin-list-report | BC check-in |
| Danh sách check-out | checkout-list-report | BC check-out |
Danh sách Permissions
| Permission | Mô tả |
|---|---|
view | Xem danh sách, xem chi tiết |
add | Thêm mới |
edit | Chỉnh sửa |
delete | Xóa/vô hiệu hóa |
export | Xuất dữ liệu (Excel, PDF...) |
import | Nhập dữ liệu |
refund | Hoàn tiền (đặc biệt cho thanh toán) |
approve | Phê duyệt (đặc biệt cho booking) |
Ví dụ thực tế
VÍ DỤ 1: Thiết lập cho Cửa hàng bán vé
Nhân sự:
- 1 Quản lý
- 2 Nhân viên quầy
- 1 Kế toán
Cách thiết lập:
Bước 1: Tạo nhóm người dùng
Nhóm 1: Quản lý cửa hàng
- Quyền: Toàn bộ (trừ quản lý người dùng)
Nhóm 2: Nhân viên quầy
- Quyền: Đặt chỗ, Thanh toán, Xem sản phẩm
Nhóm 3: Kế toán
- Quyền: Thanh toán, Báo cáo, Xuất dữ liệu
Bước 2: Tạo tài khoản
User 1: quan.ly
- Tên: Nguyễn Văn Quản
- Nhóm: Quản lý cửa hàng
User 2: nhanvien1
- Tên: Trần Thị A
- Nhóm: Nhân viên quầy
User 3: nhanvien2
- Tên: Lê Văn B
- Nhóm: Nhân viên quầy
User 4: ketoan
- Tên: Phạm Thị Kế
- Nhóm: Kế toán
VÍ DỤ 2: Thiết lập cho Nhà hàng
Nhân sự:
- 1 Quản lý nhà hàng
- 3 Phục vụ
- 1 Thu ngân
- 1 Bếp trưởng
Cách thiết lập:
Bước 1: Tạo nhóm
Nhóm 1: Quản lý nhà hàng
- Dashboard: view
- Sản phẩm: view, add, edit
- Menu: view, add, edit
- Bàn: view, add, edit
- Order: view
- Thanh toán: view
- Báo cáo: view, export
Nhóm 2: Phục vụ
- Dashboard: view
- Menu: view
- Bàn: view
- Order: add (tạo order cho bàn)
Nhóm 3: Thu ngân
- Dashboard: view
- Order: view
- Thanh toán: view, add
- Hóa đơn: view, export
Nhóm 4: Bếp
- Dashboard: view
- Menu: view
- Order: view (xem order để chế biến)
- Sản phẩm: view
Bước 2: Tạo tài khoản
QL: quanly.nh
PV1: phucvu1
PV2: phucvu2
PV3: phucvu3
TN: thungan
BT: beptruong
VÍ DỤ 3: Phân quyền đặc biệt
Tình huống:
Nhân viên A thuộc nhóm "Nhân viên quầy" nhưng cần thêm quyền Xuất báo cáo
Giải pháp:
Bước 1: Sửa User A
Bước 2: Giữ nguyên nhóm "Nhân viên quầy"
Bước 3: Thêm quyền cá nhân:
☑ payment-report.view
☑ payment-report.export
Bước 4: Lưu
Kết quả:
- User A kế thừa quyền từ nhóm
- Thêm quyền xuất báo cáo
- Các nhân viên khác không có quyền này
Lưu ý quan trọng
⚠️ Quy tắc bắt buộc
1. Về Username:
✅ Hợp lệ:
- nguyen.van.a
- nhanvien01
- admin_shop
❌ Không hợp lệ:
- Nguyễn Văn A (có dấu, khoảng trắng)
- nhân viên 01 (có khoảng trắng)
- admin@shop (có ký tự đặc biệt @)
Format chuẩn: [a-z0-9._-]+
2. Về Mật khẩu:
✅ Yêu cầu:
- Tối thiểu 6 ký tự
- Nên có: chữ HOA, chữ thường, số, ký tự đặc biệt
- Không nên dùng mật khẩu dễ đoán: 123456, password...
✅ Mật khẩu mạnh:
- ThinkSoft@2024
- Pass@123xyz
- Admin!2024
3. Về Phân quyền:
⚠️ Lưu ý:
- Admin có toàn quyền → Cẩn thận khi cấp
- Người dùng không thuộc nhóm nào → Chỉ có quyền cá nhân
- Quyền delete → Chỉ vô hiệu hóa, không xóa vĩnh viễn
- Thay đổi nhóm → Quyền thay đổi ngay lập tức
4. Về Trạng thái:
ACTIVE: Đang hoạt động, có thể đăng nhập
INACTIVE: Bị vô hiệu hóa, không thể đăng nhập
⚠️ Vô hiệu hóa người dùng:
- Không xóa dữ liệu
- Giữ nguyên lịch sử
- Có thể kích hoạt lại
💡 Mẹo hay
1. Đặt tên username:
✅ Tốt:
- Theo tên: nguyen.van.a, tran.thi.b
- Theo chức năng: ql.banhang, nv.quay01
- Có quy chuẩn: [tên].[phong ban]
❌ Tránh:
- user1, user2, user3
- abc, test, admin123
- Tên quá dài hoặc phức tạp
2. Tổ chức nhóm:
Nên:
- Chia nhóm theo chức năng/phòng ban
- Đặt tên rõ ràng
- Mô tả chi tiết
Ví dụ:
- "Quản lý bán hàng" (rõ ràng)
- Thay vì "Nhóm 1" (không rõ)
3. Quản lý mật khẩu:
Chính sách nên có:
- Đổi mật khẩu định kỳ (3-6 tháng)
- Mật khẩu mạnh bắt buộc
- Không dùng lại mật khẩu cũ
- Khóa tài khoản sau N lần đăng nhập sai
4. Phân quyền hợp lý:
Nguyên tắc:
- Chỉ cấp quyền cần thiết
- Không cấp quyền "cho dự phòng"
- Xem xét lại quyền định kỳ
- Thu hồi quyền khi không cần
🔍 Checklist trước khi tạo user
☐ Đã xác định chức năng của người dùng
☐ Đã tạo/chọn nhóm phù hợp
☐ Username theo quy chuẩn (chữ thường, không dấu)
☐ Mật khẩu đủ mạnh (tối thiểu 6 ký tự)
☐ Đã phân quyền đúng (không thừa, không thiếu)
☐ Đã kiểm tra xem user có đăng nhập được không
📊 Action Log
Hệ thống tự động ghi log:
✅ Tạo người dùng mới
✅ Sửa thông tin người dùng
✅ Đổi mật khẩu
✅ Thay đổi quyền
✅ Vô hiệu hóa người dùng
✅ Kích hoạt lại người dùng
✅ Tạo nhóm mới
✅ Sửa nhóm
✅ Thay đổi quyền nhóm
✅ Vô hiệu hóa nhóm
Troubleshooting
Lỗi thường gặp
1. "Username đã tồn tại"
Nguyên nhân: Username trùng với user khác (kể cả INACTIVE)
Giải pháp:
- Chọn username khác
- Hoặc kiểm tra user cũ:
→ Nếu là user cũ không dùng → Kích hoạt lại
→ Nếu cần username này → Đổi username user cũ
2. "Không đăng nhập được sau khi tạo"
Nguyên nhân:
- Trạng thái INACTIVE
- Sai mật khẩu
- Username có ký tự đặc biệt
Giải pháp:
1. Kiểm tra trạng thái user → Phải là ACTIVE
2. Reset mật khẩu
3. Kiểm tra username (chỉ dùng a-z, 0-9, ., _, -)
3. "User không có quyền sau khi thêm vào nhóm"
Nguyên nhân:
- Nhóm chưa có quyền
- Cache chưa clear
Giải pháp:
1. Kiểm tra quyền của nhóm
2. User đăng xuất và đăng nhập lại
3. Clear cache trình duyệt
4. "Không vô hiệu hóa được user"
Nguyên nhân:
- User đang đăng nhập
- Không có quyền
Giải pháp:
1. Đợi user đăng xuất
2. Hoặc kick user ra (nếu có quyền admin)
3. Kiểm tra quyền của tài khoản hiện tại