2011-05-10 40 views
0

我的公司正在使用Microsoft Dynamics CRM 2011並希望自定義某些功能。如下所述的定製:Microsoft Dynamics CRM 2011:特定安全角色和帳戶所有者的字段級安全

「帳戶的密碼字段(用於登錄我們公司的網站)。密碼只對帳戶的所有者或銷售經理或銷售管理員可見。「

我該怎麼做,似乎MSCRM 2011中的現場安全只支持用戶和團隊。請告訴我怎麼做(即使通過編程)。

回答

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 
} 

有點粗糙 'N' 準備好了,但會做的工作。

+0

...並不會阻止用戶從任何地方看到的密碼值,除了在表格上 - 有人可以很容易地創建一個高級查找查詢,包括列一飽眼福。根本不理想。 – AdamV 2012-02-22 15:19:33

+0

一個公平點,儘管您可以輕鬆地設置該字段對高級查找不可見。我不確定這個問題不適用於下面的解決方案嗎? – glosrob 2012-02-22 16:37:12

+0

你可以使一個字段不可搜索,因此它不能用於高級查詢查詢(如果你喜歡「where」部分),但可以添加所有列(「select ...」部分),這是無法控制的。 在我的解決方案中,用戶只能訪問他們擁有的密碼記錄,並且在那些用戶可以看到所有字段。在他們不擁有的記錄上,他們什麼都看不到,甚至沒有記錄存在。銷售經理可以看到全部,因爲他們有不同的角色。 – AdamV 2012-09-25 14:15:50

0

對於特定角色(銷售經理等)而言,現場安全性非常好,但對於「情境感知」情景,例如對於記錄所有者而言,情況並非如此。

最好的辦法是爲密碼創建一個自定義實體,使主字段(默認名稱)不需要業務。

爲Account創建一個N:1關係,建立關係「Parental」並使查找字段Business Required。 您現在將在帳戶的左側導航欄中看到「密碼」。

編輯密碼錶單以查找帳戶,併爲密碼本身添加文本字段,並使默認情況下「名稱」字段不可見,因此您可以忽略它。

創建一個安全角色(或編輯現有角色)以授予用戶級別對密碼的讀取,創建,更新,分配和附加權限的訪問權限。修改銷售經理角色以允許讀取所有密碼記錄。

父母關係將意味着如果一個帳戶被重新分配,那麼孩子的密碼記錄也將被重新分配。 但是,有人可以創建一個密碼記錄(所以他們擁有它)並將其鏈接到一個帳戶(甚至可能是他們不擁有的帳戶),而不必更改所有者以匹配父級。因此,在密碼記錄上創建一個工作流創建,重新分配或重新分配,這將使所有者更改爲與父帳戶相同的狀態,以整理這種情況。

編輯密碼的相關視圖以顯示密碼字段。根據需要編輯其他視圖。 (如果你真的想直接在賬戶表單上看到密碼,可以使用內聯網格設置來使用最少的空間,沒有視圖選擇器等。儘管如此,實際上仍然佔用太多。)

希望這有助於