Profile SObject中缺少“管理公共列表视图”权限

时间:2012-07-18 23:28:45

标签: salesforce

我正在编写一个visualforce页面,其他东西允许创建队列。但是,我想控制是否显示该部分,具体取决于用户是否具有所需的权限。

根据文档:Creating Queues,用户需要拥有两种权限:

  1. “自定义应用程序”
  2. “管理公共列表视图”
  3. 我正在查询个人资料:

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

    但是我的问题是我不认为“管理公共列表视图”权限在Profile对象上公开。 api名称是如此不同我错过了吗?有谁知道如何在代码中检查此权限?

3 个答案:

答案 0 :(得分:0)

我不确定权限的名称,但你可以运行一个方法来尝试在init方法或类似方法中插入(然后删除!)一个队列,如果成功,那么你知道他们拥有全部需要相关的权限。

当然,这里的障碍是你可能不希望它们能够删除队列(我假设它们以与CRUD操作相关的系统中其他对象的方式工作)。

答案 1 :(得分:0)

您无法在代码中检查这些权限,而Lancey Snr的建议可能是最简单的解决方法。但是,我个人不喜欢通过在构造函数中创建和删除对象来检查权限的想法。

我会创建一个自定义设置来跟踪允许创建配置文件的配置文件(可能是纯文本)。自定义设置的优点是管理员可以在创建新配置文件或删除旧配置文件或重新配置权限时更新自定义设置。

将自定义设置与控制器代码中的“with sharing”关键字结合使用,您可以确保无权创建队列的用户将无法创建它。

阿努普

答案 2 :(得分:0)

我决定将它仅限于具有“自定义应用程序”配置文件选项的人。

原因是这是重要的个人资料选项。人们需要公共列表视图选项的唯一原因是因为为每个新队列创建了一个新视图。

正如我发现顶点代码中的队列对象没有crud安全性。因此,仅向具有“自定义应用程序”的用户限制队列创建似乎是最安全和最灵活的行动方案。