2

我正在编写一个visualforce页面,其中包括允许创建队列的其他内容。但是,我想根据用户是否具有所需的权限来控制是否显示该部分。

根据文档:创建队列用户需要同时拥有这两个权限:

  1. “自定义应用程序”
  2. “管理公共列表视图”

我正在像这样查询个人资料:

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

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

4

3 回答 3

0

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

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

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

阿努普

于 2012-07-22T09:33:58.617 回答
0

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

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

正如我发现的那样,顶点代码中的队列对象没有安全性。因此,将队列创建仅限于使用“自定义应用程序”的用户似乎是最安全、最灵活的做法。

于 2012-07-24T08:48:18.447 回答
0

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

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

于 2012-07-19T11:08:26.763 回答