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

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ẩm
  • products.add - Thêm sản phẩm mới
  • products.edit - Sửa sản phẩm
  • products.delete - Xóa/vô hiệu hóa sản phẩm

Danh sách Modules

ModuleMô tả
Trang chủdashboardDashboard và tổng quan
Người dùngusersQuản lý tài khoản
Nhóm người dùnguser-groupsQuản lý nhóm
Khách hàngcustomersQuản lý khách hàng
Công tycompaniesQuản lý công ty
Sản phẩmproductsQuản lý sản phẩm/dịch vụ
Danh mục SPproduct-categoriesDanh mục sản phẩm
Đơn vị tínhunitsĐơn vị tính (Cái, Ly, Kg...)
Gói bánsale-packagesGói bán hàng
Danh mục gói bánsale-package-categoriesDanh mục gói
Đại lýagenciesQuản lý đại lý
Cấp đại lýagency-levelsCấp đại lý
Nhân viênstaffsQuản lý nhân viên
Khu vựcareasKhu vực địa lý
Thiết bịdevicesThiết bị check-in/out
Loại thanh toánpayment-typesHình thức thanh toán
Nhà hàngrestaurantsQuản lý nhà hàng
Khu vực NHrestaurant-areaKhu vực nhà hàng
Menu NHrestaurant-menuMenu nhà hàng
Bàn NHrestaurant-tableBàn nhà hàng
Combo NHrestaurant-comboCombo nhà hàng
Điều khoảnusage-termsĐiều khoản sử dụng
Mẫu intemplatesMẫu in vé, hóa đơn
Kết nốiconnectorsKết nối bên thứ 3
Nhóm mãcode-groupsNhóm mã vé
codesMã vé
Báo cáo thanh toánpayment-reportBC thanh toán
Báo cáo vé đã dùngused-tickets-reportBC vé sử dụng
Danh sách chờwaiting-list-reportBC danh sách chờ
Danh sách check-incheckin-list-reportBC check-in
Danh sách check-outcheckout-list-reportBC check-out

Danh sách Permissions

PermissionMô tả
viewXem danh sách, xem chi tiết
addThêm mới
editChỉnh sửa
deleteXóa/vô hiệu hóa
exportXuất dữ liệu (Excel, PDF...)
importNhập dữ liệu
refundHoàn tiền (đặc biệt cho thanh toán)
approvePhê 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