在C#中,为用户和团队共享记录可能会用到下面这三个类:
GrantAccessRequest | 共享一条记录为之前没有share过这条记录的用户或团队 |
ModifyAccessRequest | 修改共享权限,为之前已经share给用户或团队的记录 |
RevokeAccessRequest | 取消用户或团队对一条记录的共享权限 |
-
GrantAccessRequest
变量accountRef为需要共享的记录
变量teamRef为要共享的团队
var accouontRef = new EntityReference(Account.EntityLogicalName, _accountId);
var teamRef = new EntityReference(Team.EntityLogicalName, _teamId);
var grantAccessRequest = new GrantAccessRequest
{
PrincipalAccess = new PrincipalAccess
{
// 赋予读,写和删除权限
AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess | AccessRights.DeleteAccess,
Principal = teamRef
},
Target = accouontRef
};
_serviceProxy.Execute(grantAccessRequest);
-
ModifyAccessRequest
变量accountRef为需要共享的记录
变量teamRef为要共享的团队
var accouontRef = new EntityReference(Account.EntityLogicalName, _accountId);
var teamRef = new EntityReference(Team.EntityLogicalName, _teamId);
var modifyUser1AccessReq = new ModifyAccessRequest
{
PrincipalAccess = new PrincipalAccess
{
// 赋予删除和附加权限
AccessMask = AccessRights.DeleteAccess | AccessRights.AppendAccess,
Principal = teamRef
},
Target = accouontRef
};
_serviceProxy.Execute(modifyUser1AccessReq);
-
RevokeAccessRequest
变量accountRef为需要共享的记录
变量teamRef为要共享的团队
var accouontRef = new EntityReference(Account.EntityLogicalName, _accountId);
var teamRef = new EntityReference(Team.EntityLogicalName, _teamId);
var revokeUserAccessReq = new RevokeAccessRequest
{
Revokee = teamRef,
Target = accouontRef
};
_serviceProxy.Execute(revokeUserAccessReq);
Note:
- 使用ModifyAccessRequest不能将权限变为空,也就是什么权限都没有,即使是赋为空,系统也会保留一个读权限的。所以如果你想让一个用户或者团队对一条记录什么权限都没有的话,直接使用RevokeAccessRequest来移除权限吧
参考:
Sample: Share records using GrantAccess, ModifyAccess and RevokeAccess messages (Developer Guide for Dynamics 365 Customer Engagement (on-premises)) | Microsoft Docshttps://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/sample-share-records-using-grantaccess-modifyaccess-revokeaccess-messages?view=op-9-1AccessRights Enum (Microsoft.Crm.Sdk.Messages) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/api/microsoft.crm.sdk.messages.accessrights?view=dataverse-sdk-latest