Microsoft Dynamic CRM 2011:特定安全角色和帐户所有者的字段级安全性

时间:2011-05-10 02:41:12

标签: dynamics-crm-2011

我的公司正在使用Microsoft Dynamic CRM 2011,并希望自定义某些功能。如下所述的自定义:

“帐户有密码字段(用于登录我们公司的网站)。密码仅对帐户所有者或销售经理或销售管理员可见。“

我怎样才能做到这一点,MSCRM 2011中的Field Security似乎只支持用户和团队。请告诉我怎么做(即使是通过编程)。

2 个答案:

答案 0 :(得分:0)

这可以通过使用javascript实现。

首先,将密码字段设置为默认不可见 - 这将使其最初停止显示,以便没有权限的用户可以看到它(甚至是短暂的)。

其次,提供一个javascript函数来查找登录用户的角色。有很多方法可以做到这一点,每种方式都有自己的优点和缺点。这个link有两种方法可以使用。

第三,使用此函数和一些额外的javascript来检查所有者字段,以使字段可见/不可见。

举个例子:

function CanUserSeePassword() {
    var loggedInUserGuid = USER_ID;//USER_ID is built in CRM constant
    if (RetrieveUserRoles(loggedInUserGuid)) {
        SetPasswordFieldVisibility(true);
    }
    else {
        var ownerGuid = Xrm.Page.getAttribute('ownerid').getValue()[0].id;
        SetPasswordFieldVisibility(ownerGuid == USER_ID);
    }
}

function SetPasswordFieldVisibility(isVisible) {
    Xrm.Page.getAttribute('new_password').setVisible(isVisible);
} 

function RetrieveUserRoles() {
    //use code from link above to return a bool, either user is in appropriate security role, or is not
}

粗略'准备好',但会完成这项工作。

答案 1 :(得分:0)

现场安全对于特定角色(销售经理等)非常有用,但不适用于“情境感知”场景,例如记录所有者。

您最好的选择是为密码创建一个自定义实体,使主要字段(默认名称)不需要业务。

与Account建立N:1关系,将关系设为“Parental”,并将查找字段设为Business Required。 您现在将在帐户的左侧导航栏中看到“密码”。

编辑密码表单以查找帐户,并为密码本身添加文本字段,并使“名称”字段默认不可见,以便您可以忽略它。

创建安全角色(或编辑现有角色),为读取,创建,更新,分配和追加权限提供密码的用户级访问权限。修改销售经理角色以允许读取所有密码记录。

父母关系将意味着如果重新分配帐户,那么子密码记录也将如此。 但是,有人可以创建密码记录(因此他们拥有密码记录)并将其链接到帐户(甚至可能是他们不拥有的帐户),而无需更改所有者以匹配父级。因此,在密码记录创建,重新父母或重新分配上创建工作流程,这将使所有者更改为与父帐户相同以整理这种情况。

编辑密码的关联视图以显示密码字段。根据需要编辑其他视图。 (如果您确实希望密码在帐户表单上直接显示,请使用内联网格集以使用最少的空间,不使用视图选择器等。但实际上仍然会占用太多。)

希望这有帮助