使用GrantAccessRequest赋予READ权限

时间:2014-09-25 09:09:16

标签: plugins dynamics-crm-2011 security-roles

我想从systemuser实体上的安全角色中删除READ权限,并在每次新的系统用户创建时执行插件 - 它将向特定用户授予READ,以便只有他/她的系统用户记录对他们可见。 该插件必须在链中异步运行。

在我的插件中,我使用以下代码为用户分配读取权限,

                    EntityReference systemUser = PostImage.ToEntityReference();
                    GrantAccessRequest grantRequest = new GrantAccessRequest()
                    {
                        Target = systemUser,
                        PrincipalAccess = new PrincipalAccess()
                        {
                            Principal = systemUser,
                            AccessMask = AccessRights.ReadAccess 
                        }
                    };

                    GrantAccessResponse grantResponse =
                        (GrantAccessResponse)XrmServiceContext.Execute(grantRequest);

但是当我创建一个新用户并使用该凭据登录时,这似乎没有任何改变。所有系统用户记录都是可见的!我做错了什么?目前,systemuser已将读取权限设置为crm安全角色中的“组织”。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

您无需在插件或任何其他类型的代码中执行此操作。通过PrincipalObjectAccess('POA')表中的行向所有用户授予对其自己的用户记录和用户设置的显式共享。