|
|
|
权限是在功能上定义的,一个人有了某个功能,那么理论上就意味着他能够访问这个功能下的所有数据,而节点上定义的查询条件只是一种表层的数据划分,最终列表数据的范围是二者的交集,这只针对这个列表,在其他地方,这个人的数据访问权限应该只是功能上定义的范围。
例如,在某种场景下,无法得到节点的查询条件,那么将会仅采用功能上的权限设定--要说明的,这不是数据权限存在问题,因为数据权限是根据功能来的。 例如一个人有文章分类查看功能,功能上定义的数据权限条件是C1,在树上配置一个节点叫做文章分类,节点上有限制条件C2。那么点击节点出来的列表中的数据范围应该是C1*C2。再此列表中点击查询,应该根据其它参数可以确定是否要带着节点上的数据条件C2。也就是说,在这个列表中查询的话,最大的可能数据范围是C1--在查询中是否带着C2,由列表界面上的script决定。 在这个列表上面有一个"查看文档"按钮,查看选中分类下的文档。调用的功能是文档列表,并且传入了所属分类为某分类这个条件C3.此时我们假设这个人所拥有的文档列表功能上也有数据范围条件C4,所以最终出来的文档列表数据条件是C3*C4。在这个列表中点击查询的时候,功能上的条件C4是一定会带着的,但条件C3的带与不带,则决定于这个列表上的script(默认值应该是带着的--这可以根据传递过来的C3得到并自动加入到查询条件中)。 查询条件下拉框中,显示的项目默认是当前实体的所有属性,可以通过script过滤某些属性 |
||||||||||||||||||||||||||||||||||||||||||
<query target="user">
<projections>
<item type="count" property="id" alias="user_id"/>
<item type="group" property="gender"/>
<item type="avg" property="age"/>
<item property="application.id"/>
<item type="sum" property="application.id"/>
</projections>
<condition>
<group>
<item name="organization.id" operator="in">
<value>
<query target="organization">
<projections>
<item property="id"/>
</projections>
<condition>
<item name="name">零点工作室</item>
</condition>
</query>
</value>
</item>
<item name="age" operator="between">
<value>10</value>
<value>20</value>
</item>
<item name="age" operator="gt" value="10"/>
</group>
<group relation="or">
<group relation="and"></group>
</group>
</condition>
<order>
<item type="asc">age</item>
<item type="desc">weight</item>
</order>
</query>