Share
新共享给某个用户
// Grant the team read/write access to the lead.
var teamReference = new EntityReference(Team.EntityLogicalName, _teamId);
var grantAccessRequest = new GrantAccessRequest
{
PrincipalAccess = new PrincipalAccess
{
AccessMask = AccessRights.ReadAccess | AccessRights.WriteAccess,//共享的权限
Principal = teamReference//共享给某个用户
},
Target = leadReference//要共享的对象
};
organizationService.Execute(grantAccessRequest);
修改共享
// Grant the first user delete access to the lead.
var modifyUser1AccessReq = new ModifyAccessRequest
{
PrincipalAccess = new PrincipalAccess
{
AccessMask = AccessRights.DeleteAccess,
Principal = systemUser1Ref
},
Target = leadReference
};
取消所有共享
// Revoke access to the lead for the second user.
var revokeUser2AccessReq = new RevokeAccessRequest
{
Revokee = systemUser2Ref,
Target = leadReference
};
organizationService.Execute(revokeUser2AccessReq);
对应的Plugin
class testSharePlugin : IPlugin
{
IOrganizationService organizationService;
public void Execute(IServiceProvider serviceProvider)
{
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
Guid userid = context.UserId;
organizationService = factory.CreateOrganizationService(userid);
var userName = QueryFullName("systemuser", userid);
//GrantAccessRequest
{
var principalAccess = context.InputParameters["PrincipalAccess"] as PrincipalAccess;
var power = principalAccess.AccessMask;
var awardedER = principalAccess.Principal;
}
//ModifyAccessRequest
{
var modifyAccessRequest = context.InputParameters["ModifyAccessRequest"] as PrincipalAccess;
var power = modifyAccessRequest.AccessMask;
var awardedER = modifyAccessRequest.Principal;
}
//RevokeAccessRequest
{
var awardedER = context.InputParameters["Revokee"] as EntityReference;
}
//var awardedName = QueryFullName("systemuser", awardedER.Id);
var entity = context.InputParameters["Target"] as EntityReference;
var entityName = QueryFullName(entity.LogicalName, entity.Id);
throw new InvalidPluginExecutionException(string.Format("Test : ({0},{1}) Share to ({2}, {3}).\nEntity is ({4}, {5}.\nPower is {6})", userName, userid, awardedName, awardedER.Id, entityName, entity.Id, power));
}
public string QueryFullName(string logicalName, Guid id)
{
var entity = organizationService.Retrieve(logicalName, id, new ColumnSet(true));
return entity.GetAttributeValue<string>("fullname");
}
}