Odoo 自带有权限控制机制,用户仅能使用被授权了的功能。这就意味着我们自建的库功能不对
普通用户甚至是管理员开放。
“ 注意: Odoo 12 的修改管理员用户现在也像其它用户一样受权限控制所限制。在此前的 Odoo 版本中, admin 都作为特权用户不受权限规则控制。而新版中我们需要进行授权管理员才能访问模型数据。 ”
Odoo 安全权限通过安全组来设置访问权限。每个用户的权限根据所属组来决定,对于我们的测试项目,我们将创建一个 to-do 用户组,然后通过组来分配可使用功能的用户。我们通常使用ACL 为某个组赋予指定模块的读或写权限,就当前项目,我们对添加的 to-do 项模型添加读和写权限。
此外,我们还可以设置用户对指定模型的记录范围的访问规则。本项目中 to-do 项为用户私有,所以用户仅能访问自己创建的记录,这通过安全记录规则实现。
安全组
访问控制基于组,通过安全组对模型设置权限,控制组内用户所能使用的菜单项。要做更精细化的控制,我们可以对指定菜单项、视图、字段甚至是(带有记录规则的)数据记录进行权限控制。
安全组还可以对应用进行管理,通常每个应用有两个组:用户组(Users)可执行日常操作、管理员组(Manager)可对应用执行所有配置。
下面我们新建一个安全组,在菜单中访问 Settings > Users & Companies > Groups。点击
Create 通过如下值创建一条新记录:
⚫ Application: 留空
⚫ Name: To-do User
⚫ Inherited 标签下: 添加 User types / Internal User 项
在 Application 下拉列表中还没有 to-do 应用,所以我们直接通过组表单来添加。我们还继承了 Internal User 用户组,那么这个组的成员也会自动(递归)成为所继承组的成员,以获取他们原有的权限。 Internal User 是基础权限组,通常应用的安全组都继承它。
“ 注意: Odoo 12 的修改在 Odoo 12 之前,内部用户组称作雇员(Employee),这只是表面上的修改,代码中标识符(XML id)仍然和此前版本相同: base.group_user。 ”
安全权限控制列表
现在我们可以对指定组(To-do User)进行指定模型的权限授予,在上述表单的 Access Rights 标签下添加一条记录,对应的值为:
⚫ Name: To-do Item User Access
⚫ Object: 在列表中选择 To-do Item
⚫ 勾选 Read Access, Write Access, Create Access, and Delete Access
模型权限也可通过 Settings > Technical > Security > Access Rights 进行管理。我们无需向Partner 模型添加权限,因为我们的组继承了内部用户组,已经获取了相应权限。
现在可以将 admin 用户添加到新建组来测试新加的权限设置
1、 在菜单中点击 Users & Companies > Users,从用户列表中选择 Mitchell Admin,然后编辑表单
2、 在 Access Rights 标签下的 Other 版块,会发现一个名为 To-do User 的复选框用于让用户加入权限组,勾选后点击 Save 保存表单。
如果一切操作都正确的话,我们就可以看到 To-do 顶级菜单,用于添加任务清单项,并且我们只能访问自己的任务清单而看不到其它人的。(请先执行创建菜单项部分再进行查看)