Lập trình Odoo/OpenERP Phần 3: Xây dựng cơ chế phân quyền trong Odoo/OpenERP Hướng dẫn cơ chế phân quyền Access rule và cách tạo các group user (Nhóm người dùng) trong Odoo Cách phân quyền trên các view, menu của giao diện người dùng
Trang 1LAB_3 PHÂN QUYỀN
MÃ NGUỒN MỞ
TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
Hướng dẫn: Nguyễn Yên Bảo Điện thoại:
Trang 2NỘI DUNG
2
1. Cơ chế phân quyền trong Odoo
2. Tạo group user
3. Gán quyền cho các group user
4. Phân quyền truy cập view
Trang 3NỘI DUNG
2. Tạo group user
3. Gán quyền cho các group user
4. Phân quyền truy cập view
Trang 41 CƠ CHẾ PHÂN QUYỀN TRONG ODOO
4
Bài toán:
Giả sử với hệ thống quản lý sinh viên
Sẽ có nhiều đối tượng người dùng có nhu cầu sử dụng
hệ thống
- Sinh viên: xem thông tin cá nhân và chỉnh sửa 1 số
thông tin…
- Giáo viên: xem và chỉnh sửa toàn bộ thông tin sinh
viên và điểm số…
- Giáo vụ: cập nhật điểm số, tình trạng học tập của sinh viên…
Mỗi nhóm người dùng sẽ có những quyền hạn khác nhau, vậy làm thế nào để có thể phân chia và giao quyền cho các nhóm người dùng đó?
Trang 51 CƠ CHẾ PHÂN QUYỀN TRONG ODOO
Quản lý phân quyền trong Odoo dựa vào 3 khái niệm
người dùng (user), nhóm người dùng (group) và vai trò (access rule)
User: là người trực tiếp tương tác với hệ thống, được xác định bởi tên đăng nhập và mật khẩu
hạn nhất định trong hệ thống Tất cả những user nào thuộc cùng 1 group thì sẽ có quyền giống nhau
Access rule: là 1 quy tắc để xác định quyền truy cập vào các đối tượng/chức năng/module cụ thể trong hệ thống Access rule sẽ được gán cho các group
Trang 61 CƠ CHẾ PHÂN QUYỀN TRONG ODOO
6
User 1
User 2
Rule 1
Rule 2
Rule 5 Rule 4
Rule 3
Trang 7NỘI DUNG
1. Cơ chế phân quyền trong Odoo
3. Gán quyền cho các group user
4. Phân quyền truy cập view
Trang 82 TẠO GROUP USER
8
Có 2 cách để tạo 1 group trong Odoo
dòng dữ liệu mới
Trang 92 TẠO GROUP USER
Cách 2: Chúng ta sẽ tạo các group trong 1 tập tin *.xml
và được khai báo trong update_xml của openerp .py
//Tạo 1 category để gom nhóm các group trong cùng module
< record model ="ir.module.category" id = "module_category_quanlysv" >
< field name ="name" > Quản lý sinh viên </ field >
< field name ="sequence" > 10 </ field >
</ record >
//Tạo 1 group mới
< record model = "res.groups“ id ="group_giaovien" >
< field name ="name" > Giáo viên </ field >
< field name ="category_id" ref = "module_category_quanlysv" />
</ record >
Trang 10NỘI DUNG
10
1. Cơ chế phân quyền trong Odoo
2. Tạo group user
4. Phân quyền truy cập view
Trang 113 GÁN QUYỀN CHO CÁC GROUP USER
Với một đối tượng trong hệ thống, chúng ta có 4 hoạt
động để tương tác với chúng
- Read: xem được các giá trị thuộc tính trong đối tượng
- Write: thay đổi giá trị các thuộc tính của đối tượng
- Unlink: xóa 1 đối tượng
Để gán quyền cho các group user tương tác được với các đối tượng, chúng ta tạo 1 file ir.model.access.csv và
Trang 123 GÁN QUYỀN CHO CÁC GROUP USER
12
Cấu trúc của file ir.model.access.csv
Tên cột Ý nghĩa
id Id của access rule (VD: giaovien_objnganh)
name Tên của access rule
model_id:id Tên của đối tượng mà chúng ta muốn gán quyền tương tác Phải có tiếp đầu
ngữ model_ (VD: model_x_nganh)
group_id:id Tên của group user mà chúng ta muốn gán quyền Phải có tiếp đầu ngữ
group_ (VD: group_group_giaovien)
perm_read Nhận 2 giá trị 0 hoặc 1 (tương ứng với False hoặcTrue)
perm_write Nhận 2 giá trị 0 hoặc 1 (tương ứng với False hoặc True)
perm_create Nhận 2 giá trị 0 hoặc 1 (tương ứng với False hoặc True)
perm_unlink Nhận 2 giá trị 0 hoặc 1 (tương ứng với False hoặcTrue)
Trang 13NỘI DUNG
1. Cơ chế phân quyền trong Odoo
2. Tạo group user
3. Gán quyền cho các group user
Trang 144 PHÂN QUYỀN TRUY CẬP VIEW
14
Sau khi đá gán quyền cho các group user, nếu group
có quyền read thì các user nào thuộc group mặc định
sẽ có khả năng nhìn thấy được các view của đối tượng đó
Tuy nhiên, đôi khi chúng ta không muốn user có thể nhìn thấy được hết tất cả các view Chúng ta cần giới hạn khả năng truy cập của user
Trang 154 PHÂN QUYỀN TRUY CẬP VIEW
Với menu:
< record model ='ir.ui.menu' id = 'menu_giaovien' >
< field name ="groups_id"
eval = "[(6,0,[ref('group_giaovien')])]" />
</ record >
Chỉ có những user thuộc group_giaovien mới có thể nhìn thấy được menu có id “menu_giaovien”
Với các thuộc tính trên view ta sử dụng thuộc tính
group
< field name =“state" groups = "group_giaovien" />
Chỉ có những user thuộc group_giaovien mới xem được thuộc tính state (trạng thái học tập của sinh viên)
Trang 164 Q/A
Trang 171 Xây dựng module “quản lý sinh viên”:
5 BÀI TẬP
Trang 18The End.