Microsoft Dynamics 4.0 SDK Проверьте, есть ли у пользователя права - PullRequest
0 голосов
/ 01 марта 2011

Ранее мы использовали неподдерживаемую dll (Microsoft.Crm.Application.Components.Core), чтобы проверить, имеет ли текущий пользователь в Dynamics привилегии чтения для определенной сущности:

Microsoft.Crm.Security.User.HasPrivilege(Microsoft.Crm.Security.User.Current,   
 "myentityname, AccessRights.ReadAccess);

Мне нужно сделать то же самое, используя толькоподдерживаемый SDK (и CrmService).

Может кто-нибудь посоветовать, как этого добиться с помощью SDK?

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Попробуйте с этим:

<fetch mapping="logical" count="1000" version="1.0">
    <entity name="privilege">
        <attribute name="name" />
        <filter>
            <condition attribute="name" operator="eq" value="prvCreateINSERTYOURENTITYHERE" />
        </filter>
        <link-entity name="roleprivileges" from="privilegeid" to="privilegeid">
            <link-entity name="role" from="roleid" to="roleid">
                <link-entity name="systemuserroles" from="roleid" to="roleid">
                    <link-entity name="systemuser" from="systemuserid" to="systemuserid">
                        <filter>
                            <condition attribute="fullname" operator="eq" value="INSERT NAME HERE" />
                        </filter>
                    </link-entity>
                </link-entity>
            </link-entity>
        </link-entity>
    </entity>
</fetch>
1 голос
/ 01 марта 2011

Вероятно, вы можете сконструировать выражение Fetch или QueryExpression следующим образом:

  1. Извлечение привилегии сущности
  2. Присоединение к сущности roleprivilege, где privilege.privilegeid = roleprivilege.privilegeid
  3. Присоединиться к сущности systemuserrole, где systemuserrole.roleid = roleprivileges.roleid и systemuserrole.systemuserid = (GUID рассматриваемого пользователя)
  4. Затем либо выполнить итерацию привилегий, либо искать привилегию, где privilege.name = "prvReadMyEntityName"

Просто будьте осторожны с результатами, потому что вы можете получить различную глубину привилегий от разных ролей, но если вам не важна глубина, тогда я думаю, что это сработает.

...