高度封装的前后端框架-odoo回顾(六): 权限基本概念总结

  • 数据驱动
    odoo是数据驱动的框架,所以我们的配置文件,例如ir.model.access.csv,security.xml其实就是在写预置的数据,对应的表就是ir_model_access, ir_module_category, res_group, ir_rule, 你甚至可以取psql里面去查询的
  • 两种主键
    数据库自增主键当然是id,但是在我们写数据的时候,我们还不知道数据库给我们的这些数据配置那些id,所以我们写一个
<record id="user_define_id" model="ir.rule">
...
</record>

这种标签里面的id就是我们预定义数据的id,在所有预定义的数据(即odoo中的配置文件)里面,用的是这种id

  • ir和res
    经常看到odoo命名资源的两种前缀,ir代表 Information Repository(信息资源库),res代表resource(资源),区别即: 前者代表我们系统,框架要使用到的概念,后者是可以面相用户的,能找到具体对应业务的业务对象

  • 模型关系:

  • ir.module.category 模块分类
    • res.group 组(可以理解成角色)
      • ir.rule(数据规则)
      • ir.model.access(模型访问权限)

上级和下级的关系即一对多

一个模型分类下可以有多个组,在’设置-用户和公司-用户-用户表单’下可以去查看,设置更改一个用户拥有的组

有的时候,一个模块分类下的组是下拉框,有的时候是复选框,为什么呢?
答: 如果组和组之间没有继承关系,此时,每一个组都含有不同的数据规则和访问权限,则是复选框,因为只有复选框,才能让一个用户同时拥有多个权限
当组和组之间有从上到下的继承关系的时候,则是下拉框,此时你选择下级即拥有下级组继承的上级组的权限,当然下拉框(单选)就能满足使用了
所以注意这点

    <record id="你的id" model="res.groups">
        <field name="name">你的名称</field>
        <field name="comment">你的描述</field>
        <field name="category_id" ref="你的分类"/>
        <!-- 注意下面一行, 是实现层级继承关系的关键-->
        <field name="implied_ids" eval="[(4, ref('上级组'))]"/>
        <!-- 下面一行代表给系统默认的两个用户改组身份-->
        <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
    </record>

如果ir.rule中没有配置组,则为全局规则,配置了,则为组规则.
组规则和组规则之间取并集,即规则越多,模型越容易暴露出来
全局规则和全局规则取交集,即规则越多,模型越容易隐藏看不见
组规则和全局规则取并集,效果如上面一行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值