自定义权限(Custom Permission)

Salesforce默认提供了多种方式设定用户的权限,比如简档、权限集等。在这些设定中,已经包括了系统中的对象、应用、字段、页面布局等组件,管理员或开发者只需要设定权限等级即可。

当管理员或开发者需要设定更灵活的权限时,上面的方法便可能无法满足。为了解决这个问题,Salesforce提供了自定义权限(Custom Permission),让管理员或开发者可以设定完全自定义的权限,然后根据这些权限设定灵活决定各个组件的权限。

自定义权限的设定

在设置界面搜索“自定义权限”,点击“自定义权限”链接,即可进入自定义权限一览表。

点击新建按钮,即可新建自定义权限。

从截图中可以看到,自定义权限和简档、权限集等不同,没有各种组件的权限设定,而是只有基本的几个属性。用户在设定这些属性值以后,一个自定义权限就添加完成了。

但是自定义权限不能单独分配给用户,而是要包含在简档或权限集中,相当于它们的一个组成部分。

自定义权限的使用

和简档、权限集不同,自定义权限本身并不包含对任何组件的任何权限设定。它就像一张空白的通行证,能通向哪里需要管理员或开发者来灵活设定。

自定义权限可以在多种情况下使用。现在假设系统中已经添加了一个名称为“Example_CP”的自定义权限。

验证规则

在创建验证规则时,需要在“错误条件公式”中插入各种条件。自定义权限便可以在此处使用。

比如:当用户没有名为“Example_CP”的自定义权限时,验证规则失败。那么可以在“错误条件公式”中这样写:“NOT($Permission.Example_CP)”。这样,当进行验证的用户没有被分配“Example_CP”自定义权限时,验证失败。

数据库查询

在SOQL中,可以使用CustomPermission和其他相关对象来查询自定义权限相关的信息。

比如:

-- 查询所有包含了Example_CP自定义权限的权限集
SELECT Id, DeveloperName,
(select Id, Parent.Name, Parent.Profile.Name from SetupEntityAccessItems)
FROM CustomPermission
WHERE DeveloperName = 'Example_CP' -- 查询所有包含任意自定义权限的简档和权限集
SELECT Assignee.Name, PermissionSet.Id,
PermissionSet.Profile.Name,
PermissionSet.isOwnedByProfile,
PermissionSet.Label
FROM PermissionSetAssignment
WHERE PermissionSetId
IN (SELECT ParentId
FROM SetupEntityAccess
WHERE SetupEntityType = 'CustomPermission') -- 查询ID是userId变量的值的用户所拥有的权限
SELECT SetupEntityId
FROM SetupEntityAccess
WHERE SetupEntityType='CustomPermission'
AND ParentId IN
(SELECT PermissionSetId
FROM PermissionSetAssignment
WHERE AssigneeId=:userId)

最新文章

  1. (转)雅虎工程师提供的css初始化示例代码
  2. java之如何实现调用启动一个可执行文件,exe
  3. MyEclipse 8.5 Axis2 插件完整jar包
  4. Contoso 大学 - 5 – 读取关联数据
  5. Python和C|C++的混编(一):Python调用C、C++---Boost库
  6. oracle 之 内存—鞭辟近里(三)
  7. 网络的基本概念TCP, UDP, 单播(Unicast), 多播(多播)(Multicast)
  8. 定期清空log文件
  9. sftp新建用户步骤
  10. python3 第十一章 - 数据类型之str(字符串)
  11. 【leet-code】542. 01 矩阵
  12. JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?
  13. Oracle 学习笔记(二)
  14. shell脚本--数值比较
  15. Transaction
  16. 标准I/O读写文件
  17. 语义SLAM的数据关联和语义定位(三)
  18. Xcode 几个图标解释
  19. PyQt 5控件
  20. Python爬虫常用之登录(一) 思想

热门文章

  1. Http Header 之 Requests Header 和 Responses Header
  2. Spring Boot 集成 Mybatis 实现双数据源
  3. 【WebAPI No.2】如何WebAPI发布
  4. xlwt set style making error: More than 4094 XFs (styles)
  5. 用RIPv2实现网络区域的互通
  6. Java中锁分类
  7. delete attempted to return null from a method with a primitive return type (int)
  8. Java基础之Java 修饰符
  9. 一个简单有趣的Python音乐播放器
  10. c#中打开Excel文档