如何配置ERPnext门户网站权限,让客户仅查看自身订单与问题?
实现ERPNext门户网站用户仅查看自身订单与问题的方案
1. 绑定门户网站用户与客户身份
- 门户网站用户必须关联到对应
Contact记录,且该Contact需绑定唯一Customer。创建门户用户时,勾选「关联联系人」并选择目标客户的联系人记录,确保用户身份与客户强绑定。
2. 配置Doctype的权限过滤规则(核心)
针对Sales Order(订单)和Issue(问题)两个Doctype,设置基于关联字段的权限限制:
- 进入「系统设置」→「Doctype列表」,找到对应Doctype并编辑
- 切换到「权限」标签页,给
Portal User角色添加读取权限,同时开启「应用权限规则」 - 添加权限规则:
- 订单(Sales Order):字段选
customer,操作选「等于」,值填get_current_user().contact.customer - 问题(Issue):字段选
contact,操作选「等于」,值填get_current_user().contact.name
- 订单(Sales Order):字段选
- 保存Doctype设置
3. 调整门户网站页面的查询逻辑
如果默认门户页面未自动过滤数据,需修改页面查询条件:
- 进入「网站」→「网页列表」,找到「我的订单」「我的问题」这类页面并编辑
- 在页面的「查询」区域添加过滤条件:
- 订单页面:
filters = {"customer": frappe.session.user_contact.customer} - 问题页面:
filters = {"contact": frappe.session.user_contact.name}
- 订单页面:
- 保存页面设置
4. 验证权限效果
- 用测试门户用户登录,确认仅能看到自身关联客户的订单与问题
- 尝试直接访问其他客户的记录链接,验证是否触发权限拦截
5. 额外注意事项
- 禁止给
Portal User角色赋予Customer或Contact的「全部读取」权限,避免绕过过滤规则 - 若自定义了问题类Doctype,需同步配置上述基于客户/联系人的权限规则
- 定期清理无效的门户用户与客户关联关系
内容的提问来源于stack exchange,提问作者Lubsta
相关产品推荐
相关产品推荐

