美文网首页
Salesforce自定义权限简介

Salesforce自定义权限简介

作者: 程程哥 | 来源:发表于2018-02-22 22:22 被阅读0次

    自定义权限(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)
    

    相关文章

      网友评论

          本文标题:Salesforce自定义权限简介

          本文链接:https://www.haomeiwen.com/subject/jhftxftx.html