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


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

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

Người sử dụng (End User)

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

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

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

Khi tạo 1 người sử dụng mới, bạn sẽ thấy có 3 loại người dùng như sau:

  • Internal User: Là người dùng thông thường có thể truy cập vào hệ thống, từng module và thác tác với các chức năng của hệ thống
  • Portal:
  • Public: Là người dùng chỉ có thể truy cập tới 1 số URL cụ thể được public ra ngoài.

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

Nhóm các người sử dụng hệ thống có cùng quyền hạn với nhau. Nó sẽ được gán với 1 quyền hạn cơ bản cho 1 chức năng của hệ thống. Group chỉ có thể gán cho người dùng với loại là “Internal User

Để xem danh sách các group của 1 user chúng ta hãy bật chế độ “Develop Mode” và truy cập vào [ Users ] => 1 user bất kỳ => [ Groups ]

VD: Dưới đây là danh sách groups của user Administrator

Để thay đổi nhóm quyền của 1 người người dùng, bạn hãy sửa 1 user (dưới chế độ Develop Mode):

Ở hình ảnh trên, bạn sẽ thấy dưới mục User Types sẽ có các mục sau:

  • Human Resources (khoanh đỏ) là phân quyền cho module hr đã được cài. Còn lại là phân quyền của odoo.
  • Administrator: Hai quyền cơ bản là access rightssettings
  • Technical
  • Extra Rights

Phân quyền được bố trí theo 2 kiểu

  • dropdown là phân quyền kiểu kế thừa, tức là quyền sau sẽ kế thừa quyền trước
  • checkbox 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 1 nhóm quyền trên odoo

Khi chúng ta xây dựng 1 module chúng ta muốn tạo thêm 1 nhóm quyền cho module của chúng ta thì các bạn hãy làm như sau:

Đầu tiên tạo file <my_addon>/security/security_groups.xml để định nghĩa các group có nội dung như 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 khác để kế thừa quyền.
  • users: Danh sách người dùng thuộc nhóm này. Chúng ta muốn người dùng quản trị thuộc nhóm người quản lý của ứng dụng.

Sau đó đưa đường dẫn file security_groups.xml vào file <my_addon>/__manifest__.py

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

Rồi upgrade lại module, chúng ta sẽ có được các group như sau:

Bây giờ kiểm tra xem một user khi đăng nhập có quyền thuộc group này không, chúng ta sử dụng đoạn code sau trong Odoo.

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

Phần 2: Đang soạn thảo

Nguồn: vinasupport.com

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web