关于访问数据权限的问题

image
如上图,我想实现不同的机构登录进来只能查看自己的设备数据,为每个机构开了一个用户。
image
访问组是这样建的,怎么样做查询过滤呢。
如果用我自定义的机构编码
image
每个机构都要手动去配,实际情况肯定不行的。

希望能建议下方案

你好,
先熟悉这里: 约束
通过“约束”给需要根据机构限制范围的实体添加过滤条件。可以从session中获取当前登录用户的访问组id。
以下预定义常量可以用作 JPQL 参数:

  • session$userLogin – 当前用户的 login 登录名,(如果是替代用户 – 则为被替代用户的 login)。
  • session$userId – 当前用户的 ID,(如果是替代用户 – 则为被替代用户的 ID)。
  • session$userGroupId – 当前用户的 group ID,(如果是替代用户 − 则为被替代用户的 group ID)。
  • session$XYZ – 当前用户会话的其它任意属性,将 XYZ 替换为属性名使用。

我明白你的意思。现在是我自己建的机构和访问组是没法关联上了,即使我拿到访问组的id我也没法写过滤条件

image
例如这个地方 我要做关联只能自己定义一个 没创建一个机构我都要自己写一个约束

你是自己建了一个机构实体吗?

是的,因为机构有很多字段,我需要自己定义并使用它

ok,那你应该有为用户定义所属机构的地方,用户和机构是怎样关联的呢?

我现在就是卡在这块了,用户是cuba项目建立就有的系统用户,我可以直接把用户和机构关联吗?

建议方案:
方案一: 扩展访问组实体及界面,增加具体项目需要的属性,这样可以通过框架提供的访问组来维护机构,用户本身就可以定义访问组,这样用户和机构也就关联起来了。

方案二: 使用现有的机构实体,扩展用户实体,给用户增加机构属性,扩展用户编辑界面,增加机构的定义功能。在用户登录时, 将用户的机构代码写入session,然后在访问组中定义约束时用上这个 session 值。
关于 CUBA 扩展机制参考这里:功能扩展

1 个赞

谢谢,方案明白了,我实际操作后给反馈

文档中有一处与英文版本不一致sales$ExtUser 其实应该是sales_ExtUser ,第一个我尝试了一次后来改了一次成英文文档的,test一直报错,后面清理了数据库重新uodate——datebase后可以了。提醒一下。

感谢反馈