权限体系概括
权限体系概括
谁(User)属于哪个角色(Group),这个角色能对哪些数据对象(Model)进行哪些操作(CRUD),以及能看到哪些具体的记录(Record Rule)
核心四大组件
- 用户 (Users): 系统中的操作实体,每个登录系统的员工都是一个用户。
- 权限组 (Groups): 权限的核心,它是一个“权限的集合”。一个用户可以属于多个组,并会继承所有这些组的权限。
- 访问控制列表 (Access Control Lists, ACLs): 定义了某个权限组对某个数据模型(Model)的基本操作权限,即增 (Create)、删 (Unlink)、改 (Write)、查 (Read)。这被称为“模型级权限”。
- 记录规则 (Record Rules): 在 ACLs 的基础上,进一步过滤用户能看到的具体记录。它通过定义一个域(Domain)筛选条件来实现。这被称为“记录级权限”或“行级权限”。
权限组是理解Odoo权限的关键。你可以把它想象成“角色”,比如“销售员”、“销售经理”、“财务主管”、“仓库管理员”等。
- 层级与继承: 权限组可以有层级关系。比如,“销售经理”组可以“继承”“销售员”组。这样,一个用户被分配到“销售经理”组后,他会自动拥有“销售员”组的所有权限,再加上“销售经理”组独有的一些额外权限(如查看所有销售订单、审批折扣等)。
- 应用权限: 在【设置】->【用户和公司】->【用户】的用户具体界面中中,你会看到类似“销售:管理员”这样的选项。这其实是 Odoo 为了简化配置而做的一层封装。当你选择“销售:管理员”时,系统会自动将该用户添加到一个或多个预定义的后台权限组中
路径:【设置】->【用户和公司】->【组】
ACLs 定义了一个权限组是否可以对一个数据模型(比如“销售订单”、“客户”、“产品”)进行四种基本操作。
- 读取 (Read): 是否能查看这个模型的记录。没有读取权限,其他一切都免谈。
- 写入 (Write): 是否能修改已存在的记录。
- 创建 (Create): 是否能创建新的记录。
- 删除 (Unlink): 是否能删除记录。
路径:
- 【设置】->【技术】->【安全】->【访问权限】
- 【对应模块】->【Studio】->【访问控制】
注意:用户的最终权限,是他所有“身份”(权限组)权限的总和。他从一个基础组拿到了“读”的许可,但没有任何一个组给他“创建”的许可,所以结果就是只能读、不能创建。
记录规则通过定义一个过滤条件(Domain),来限制用户组能够查看或操作的具体数据记录(行)
一个记录规则主要包含以下几个部分:
对象/模型 (Object/Model): 这条规则应用在哪个数据模型上,比如
sale.order或res.partner。名称 (Name): 一个清晰的描述,比如“仅查看个人销售订单”。
应用组 (Groups): 这条规则应用于哪些权限组。如果留空,它将成为一条全局规则,对所有用户生效(除非有其他规则覆盖)。
权限 (Permissions)
- 应用以读取 (Apply for Read): 查询/查看数据时,此规则生效。
- 应用以写入 (Apply for Write): 修改数据时,此规则生效。用户只能修改满足 Domain 条件的记录。
- 应用以创建 (Apply for Create): 创建新数据时,此规则生效。(此项较少使用,通常创建时不限制,但创建后因读取规则而无法立即看到)。
- 应用以删除 (Apply for Unlink): 删除数据时,此规则生效。用户只能删除满足 Domain 条件的记录。
规则定义 (Domain)
定义具体的过滤条件。
你可以使用一些特殊变量,最常用的是:
uid: 当前登录用户的 ID。
如果某个组的某个操作没有对应记录规则,那么该就不会受到记录层面的限制
路径:【设置】->【技术】->【安全】->【记录规则】
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Pardofelis!
评论




