我正在使用RetrieveUserPrivilegesRequest检索用户的所有权限。 这很好用,我获得了分配给某个用户的所有权限。
此外,我需要知道每个特权的来源。这意味着我想知道每个特权来自哪个SecurityRole(可以是多个)。在下一步中,我需要知道SecurityRole是否直接分配给用户,或者它是否来自用户所属的团队。
非常感谢任何帮助!
答案 0 :(得分:0)
你可以做到这一点,它应该有效。
这种关系是这样的:
特权 - > privilege.role< - role - > role.user< - user。
和
特权 - > privilege.role< - role - > role.team< - team - > team.user< - 用户
因此,我将使用fetchXml向您展示,您可以使用LinQ或QE。您需要首先询问用户拥有的角色:
<fetch mapping="logical" count="50" version="1.0">
<entity name="role">
<attribute name="roleid" />
<link-entity name="systemuserroles" from="roleid" to="roleid">
<link-entity name="systemuser" from="systemuserid" to="systemuserid">
<filter>
<condition attribute="systemuserid" operator="eq" value="{YOUR-USER-GUID}" />
</filter>
</link-entity>
</link-entity>
</entity>
</fetch>
现在您拥有了用户的角色,对于每个rol,您可以询问用户拥有的权限。
<fetch mapping="logical" count="50" version="1.0">
<entity name="privilege">
<attribute name="privilegeid" />
<link-entity name="roleprivileges" from="privilegeid" to="privilegeid">
<link-entity name="role" from="roleid" to="roleid">
<filter>
<condition attribute="roleid" operator="eq" value="{THE-ROLE-GUID}" />
</filter>
<link-entity name="systemuserroles" from="roleid" to="roleid">
<link-entity name="systemuser" from="systemuserid" to="systemuserid">
<filter>
<condition attribute="systemuserid" operator="eq" value="{FOREACH-YOUR-GUID}" />
</filter>
</link-entity>
</link-entity>
</link-entity>
</link-entity>
</entity>
</fetch>
如果您需要了解团队拥有的权限,则需要对团队进行查询,因为团队是角色的所有者。 首先是用户所属的团队:
<fetch mapping="logical" count="50" version="1.0">
<entity name="team">
<attribute name="teamid" />
<link-entity name="teammembership" from="teamid" to="teamid">
<link-entity name="systemuser" from="systemuserid" to="systemuserid">
<filter>
<condition attribute="systemuserid" operator="eq" value="{YOUR-USER-GUID}" />
</filter>
</link-entity>
</link-entity>
</entity>
</fetch>
然后,对于用户所属的每个团队,请询问团队所拥有的角色:
<fetch mapping="logical" count="50" version="1.0">
<entity name="role">
<attribute name="roleid" />
<link-entity name="teamroles" from="roleid" to="roleid">
<link-entity name="team" from="teamid" to="teamid">
<filter>
<condition attribute="teamid" operator="eq" value="{YOUR-TEAM-GUID" />
</filter>
</link-entity>
</link-entity>
</entity>
</fetch>
我想知道,你为什么要这样做,因为这可能是一个更好的方法,因为这很重,如果你需要了解其他任何事情只是让我知道,希望这可以帮助你。< / p>