当前位置: 首页 > news >正文

odoo10 权限控制用户只允许看到自己的字段

假设一个小区管理员用户,只想看到自己小区的信息。

首先添加一个用户信息选项卡界面,如下图的 用户 > 隶属信息:
在这里插入图片描述
我们在自己创建的user模块中,views文件夹下添加base_user.xml

<?xml version="1.0" encoding="UTF-8" ?>
<odoo><record id="ev_01_base_res_users_inherit_form" model="ir.ui.view"><field name="name">res.users.simple.form.inherit</field><field name="model">res.users</field><field name="inherit_id" ref="base.view_users_form"/><field name="arch" type="xml"><xpath expr="//page[@name='access_rights']" position="after"><page string="隶属信息"><group col="4"><field name="use_community_id"/></group></page></xpath></field></record>
</odoo>

上述代码中,添加的use_community_id字段是引用的user模型层,如下:

# -*- coding: utf-8 -*-from odoo import models, fields, apiclass user(models.Model):_inherit = 'res.users'class ResUsers(models.Model):"""扩展用户类型"""_name = "res.users"_inherit = "res.users"use_community_id = fields.Many2one("community", string=u"所属小区")@api.model# @tools.ormcache('self._uid')def context_get(self):# 扩展context,方便xml里面写domainuser = self.env.userresult = super(ResUsers, self).context_get()result["self_community_id"] = user.use_community_id.idreturn result

user模块的最后一项工作就是在__manifest__.py中添加依赖项,在depends属性中添加需要被权限控制的模块名,添加刚才创建的base_user.xml

在需要被控制的模块的views.xml的action中添加一个名为domain的字段,来控制是否为与当前用户关联的数据。换言之就是,只显示自己数据。

<!-- 小区 Action -->
<record id="action_community" model="ir.actions.act_window"><field name="name">小区信息</field><field name="res_model">community</field><field name="view_type">form</field><field name="view_mode">tree,form</field><field name="help" type="html"><p class="oe_view_nocontent_create">创建第一个小区信息</p></field><field name="domain">[('id','=',self_community_id)]</field>
</record>

上述代码中的self_community_idResUsers类的context_get方法注册来的。做完这一步,就是注册菜单了,如下代码:

<!-- 小区 Menuitem -->
<menuitem id="menu_community_root" name="小区" groups="ev_01.group_tw_use_xq_user"/>
<menuitem id="menu_community" name="小区信息" parent="menu_community_root" action="action_community" sequence="10" groups="ev_01.group_tw_use_xq_user"/>

通过配置多个action和菜单,可以让不同的用户显示不同的菜单,例如超级管理员的菜单应该显示全部小区信息,而小区用户只能显示自己小区的信息。最后记得升级user模块和被权限控制的模块,效果如下:
在这里插入图片描述

http://www.lryc.cn/news/364318.html

相关文章:

  • 图解Mysql索引原理
  • Arduino网页服务器:如何将Arduino开发板用作Web服务器
  • 大模型日报2024-06-05
  • LLM 大模型学习必知必会系列(二):提示词工程-Prompt Engineering 以及实战闯关
  • Spring系统学习 - Spring入门
  • Priority_queue
  • SpringMVC:获取请求数据
  • 深度学习 --- stanford cs231 编程作业(assignment1,Q2: SVM分类器)
  • 【scikit-learn010】sklearn算法模型清单实战及经验总结(已更新)
  • Rethinking overlooked aspects in vision-language models
  • 【漯河市人才交流中心_登录安全分析报告-Ajax泄漏滑动距离导致安全隐患】
  • C语言—字符函数和字符串函数
  • 爬山算法的详细介绍
  • 硕士课程 可穿戴设备之作业一
  • 测试记录3:WLS2运行Linux界面
  • 好用软件推荐
  • 王学岗鸿蒙开发(北向)——————(二)TS基本语法详解
  • 【网络协议 | HTTP】HTTP总结与全梳理(一) —— HTTP协议超详细教程
  • java基础选择题--11
  • 欲除烦恼须无我,各有前因莫羡人
  • Vue的APP实现下载文件功能,并将文件保存到手机中
  • 泛微开发修炼之旅--07通过后端代码实现创建并发送待办、源码及示例
  • 轻松搭建AI应用的三个大模型技术路线
  • Vue01-vue的简介
  • leetcode455.分发饼干、376. 摆动序列、53. 最大子序和
  • JVM的内存结构
  • 轻量管理内核复杂级别的项目
  • 【wiki知识库】05.分类管理模块--后端SpringBoot模块
  • 资源目录与云SSO
  • ChatGPT AI专题资料合集【65GB】