Chia sẻ kiến thức

Tổng quan về phân quyền trên Odoo – Phần 1: User & Group

0

Phân quyền là chức năng bắt buộc phải có của một hệ thống CMS, ERP, CRM. Tất nhiên Odoo cũng không ngoại lệ. Trong bài viết này, chúng tôi sẽ giới thiệu chi tiết đến các bạn về phân quyền trên odoo.

Đối tượng phân quyền trên odoo

Người dùng cuối

Người dùng hệ thống, đăng nhập trực tiếp vào hệ thống và thao tác các chức năng của hệ thống Odoo. Trong đó người dùng có quyền quản trị viên là người có quyền cao nhất trên odoo.

Để xem danh sách, tạo, sửa, xóa người dùng, bạn truy cập từ [ Settings ] => [ Users & Companies ] => [ Users ]

Các loại người dùng trong Odoo

Khi tạo user mới sẽ thấy 3 loại user như sau:

  • Người dùng nội bộ: Người dùng bình thường có thể truy cập vào hệ thống, từng phân hệ và tương tác với các chức năng của hệ thống
  • Cổng thông tin:
  • Công cộng: Người dùng chỉ có thể truy cập vào một số URL công khai cụ thể.

Nhóm người dùng (Group)

Nhóm người dùng hệ thống có cùng quyền. Nó sẽ được gán quyền hạn cơ bản cho một chức năng của hệ thống. Các nhóm chỉ có thể được chỉ định cho người dùng có loại “Người dùng nội bộ

Để xem danh sách các nhóm của người dùng, hãy bật “Chế độ phát triển” và truy cập vào [ Users ] => 1 người dùng bất kỳ => [ Groups ]

VD: Dưới đây là danh sách các nhóm người dùng Administrator

Để thay đổi nhóm quyền của người dùng, hãy chỉnh sửa người dùng (trong Chế độ phát triển):

Ở hình trên các bạn sẽ thấy ở mục User Type sẽ có các mục như sau:

  • nguồn nhân lực (khoanh đỏ) là quyền cho mô-đun giờ đã cài đặt. Phần còn lại là phân quyền của odoo.
  • Người quản lý: Hai quyền cơ bản là quyền truy cậpcài đặt
  • Kỹ thuật
  • Quyền bổ sung

Phân cấp được sắp xếp theo 2 kiểu

  • thả xuống là loại quyền kế thừa, nghĩa là quyền sau sẽ kế thừa quyền trước đó
  • hộp kiểm là phân quyền độc lập hoặc vừa kế thừa vừa độc lập

Hướng dẫn tạo nhóm quyền trên odoo

Khi chúng tôi xây dựng một mô-đun, chúng tôi muốn tạo một nhóm quyền bổ sung cho mô-đun của mình, vui lòng thực hiện như sau:

Đầu tiên tạo tập tin /security/security_groups.xml để định nghĩa các nhóm với nội dung sau:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <!--Create category for hosting_management-->
        <record id="module_category_hosting_management" model="ir.module.category">
            <field name="name">Hosting Management</field>
            <field name="description">Helps you manage your hosting management.</field>
            <field name="sequence">12</field>
        </record>
        <!--Author-->
        <record id="group_hm_author" model="res.groups">
            <field name="name">Author</field>
            <field name="category_id" ref="module_category_hosting_management"/>
            <field name="implied_ids" eval="[(6, 0, [ref('base.group_user')])]"/>
            <field name="comment">The user will be able to create hosting package.</field>
        </record>
        <!--Reviewer-->
        <record id="group_hm_reviewer" model="res.groups">
            <field name="name">Reviewer</field>
            <field name="category_id" ref="module_category_hosting_management"/>
            <field name="implied_ids" eval="[(6, 0, [ref('base.group_user')])]"/>
            <field name="comment">The user will be able to view record.</field>
        </record>
        <!--Administrator-->
        <record id="group_hm_admin" model="res.groups">
            <field name="name">Administrator</field>
            <field name="category_id" ref="module_category_hosting_management"/>
            <field name="implied_ids" eval="[(4, ref('hosting_management.group_hm_author')), (4, ref('hosting_management.group_hm_reviewer'))]"/>
            <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
            <field name="comment">The user will be able to do all something.</field>
        </record>
    </data>
</odoo>

Trong đó:

  • name: Tên hiển thị của nhóm.
  • category_id: Tham chiếu đến danh mục của nhóm quyền
  • implied_ids: Các nhóm quyền kế thừa quyền khác.
  • người dùng: Danh sách người dùng thuộc nhóm này. Chúng tôi muốn người dùng quản trị viên thuộc nhóm người quản lý của ứng dụng.

Sau đó đưa ra đường dẫn tập tin security_groups.xml vào tập tin /__manifest__.py

'data': [
        ...
        'security/security_groups.xml',
        ...
    ],

Sau đó nâng cấp lại module ta sẽ được các nhóm sau:

Bây giờ hãy kiểm tra xem người dùng đã đăng nhập có quyền thuộc nhóm này hay không, chúng tôi sử dụng đoạn mã sau trong Odoo.

self.env.user.has_group('hosting_management.group_hm_admin')

Phần 2: Soạn thảo

Nguồn: vinasupport.com

Leave a comment