2012-07-18 21 views
2

我正在編寫一個visualforce頁面,其他內容允許創建隊列。不過,我想根據用戶是否具有所需權限來控制該部分是否顯示。從配置文件SObject中缺少「管理公共列表視圖」權限

根據文檔:Creating Queues用戶需要同時擁有權限:

  1. 「自定義應用程序」
  2. 「管理公用列表視圖」

我查詢輪廓像這樣:

Profile profile = [ 
    SELECT 
     PermissionsCustomizeApplication 
     //Was expecting: PermissionsManagePublicListViews 
    FROM 
     Profile 
    WHERE 
     Id = :UserInfo.getProfileId()]; 

但是我的問題是我不瘦k「配置文件」對象上公開了「管理公共列表視圖」權限。 api名稱如此不同我錯過了嗎?有誰知道如何檢查代碼中的此權限?

回答

0

我決定把它限制只是人們的「個性化應用」配置文件選項。

原因是這是重要的配置文件選項。人們需要公共列表視圖選項的唯一原因是因爲爲每個新隊列創建了一個新視圖。

由於我發現在頂點代碼中的隊列對象上沒有crud安全性。因此,將隊列創建僅限於具有「自定義應用程序」的用戶似乎是最安全和最靈活的操作過程。

0

我不確定權限的名稱,但是你可以運行一個方法來嘗試在init方法或類似方法中插入(然後刪除!)一個隊列,如果它成功了,那麼你知道它們都擁有了所需的相關權限。

這裏的障礙當然是,你可能不希望他們能夠刪除隊列(我假設他們以系統中與CRUD操作相關的其他對象的方式工作)。

+0

這不是我正在尋找的。但如果這是我唯一的選擇,那就是我可能必須做的事情。 – 2012-07-19 20:26:26

+0

我實現這個建議沒有成功,你對隊列上的CRUD操作的假設是不正確的。通過共享不會阻止創建隊列。 – 2012-07-23 11:32:18

+0

Doh,當然聽起來像是一個棘手的問題。 – 2012-07-23 12:38:57

0

你不能在代碼中檢查這些權限,而Lancey Snr的建議可能是最簡單的工作。但是,我個人不喜歡通過在構造函數中創建和刪除對象來檢查權限的想法。

我想創建一個自定義設置來跟蹤允許創建配置文件的配置文件(可能是純文本)。自定義設置的優勢在於管理員可以在創建新配置文件或刪除舊配置文件或重新配置權限時更新自定義設置。

在控制器代碼中將自定義設置與「with sharing」關鍵字結合使用,您可以確保沒有創建隊列權限的用戶無法創建它。

阿努普

+0

這是一個託管軟件包的一部分。因此,由於設置自定義設置的複雜性,自定義設置不可行 – 2012-07-23 11:25:31