Microsoft CRM 2011,获取用户的权限

时间:2014-10-31 08:31:28

标签: dynamics-crm-2011

我正在使用RetrieveUserPrivilegesRequest检索用户的所有权限。 这很好用,我获得了分配给某个用户的所有权限。

此外,我需要知道每个特权的来源。这意味着我想知道每个特权来自哪个SecurityRole(可以是多个)。在下一步中,我需要知道SecurityRole是否直接分配给用户,或者它是否来自用户所属的团队。

非常感谢任何帮助!

1 个答案:

答案 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>