5

私は MS CRM プラグインに取り組んでおり、現在のユーザーが現在のエンティティへの書き込みアクセス権を持っているかどうかを判断できるはずです。このタスクにアプローチする方法がわかりません。

このタスクを実行する最もユーザー フレンドリーな方法は、現在サポートされていないようです。

FetchXML クエリを作成してその出力を解析する以外に、MS CRM 2011 SDK に代替手段はありますか?

4

2 に答える 2

10

これが私が思いついたものです — このコードは、現在のユーザーが現在のレコードに特権を与えているかどうかをチェックします:

// Requesting user's access rights to current record
var principalAccessRequest = new RetrievePrincipalAccessRequest
{
    Principal = new EntityReference("systemuser", localContext.PluginExecutionContext.UserId),
    Target = new EntityReference(localContext.PluginExecutionContext.PrimaryEntityName, localContext.PluginExecutionContext.PrimaryEntityId)
};

// Response will contain AccessRights mask, like AccessRights.WriteAccess | AccessRights.ReadAccess | ...
var principalAccessResponse = (RetrievePrincipalAccessResponse)localContext.OrganizationService.Execute(principalAccessRequest);

if ((principalAccessResponse.AccessRights & AccessRights.WriteAccess) != AccessRights.None)
{
    ...
    ...
    ...
}

ユーザーが現在のレコードを取得ifする必要がある場合、ステートメント内のコードが実行されます。WriteAccess

于 2013-04-16T16:18:04.773 に答える