在Salesforce Apex WebService上实施的权限

时间:2012-01-30 23:53:43

标签: permissions salesforce apex-code

阅读this tidbit后,似乎当前用户的许可无关紧要。但是,当使用具有管理员配置文件的用户调用此方法时,它会抛出INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY异常:

global without sharing class OpportunityTeamSales {
    WebService static void AssignToSalesTeam(string userId, string opportunityId)
    {
        OpportunityTeamMember tm = new OpportunityTeamMember();
        tm.OpportunityId = opportunityId;
        tm.UserId = userId;
        tm.TeamMemberRole = 'Sales Engineer';

        insert tm;
    }
}

使用显式without sharing关键字的事件,似乎是对对象/子对象强制执行字段级安全性/权限。 OpportunityOpportunityTeamMember being系统对象,我们无法编辑关系。

更新

遇到错误的用户配置文件对Opportunity对象具有读/写/修改权限,OpportunityTeamMember对象似乎没有特定的权限集。我们只是尝试创建一个OpportunityTeamMember,即用户具有完全权限的查找目标,但“删除”除外。

1 个答案:

答案 0 :(得分:3)

without sharing表示该类不遵守共享规则,当对象的隐私设置设置为private时,该规则管理系统内记录的可见性。据我所知,这并不意味着对象级权限被覆盖,因此您仍然无法访问连接到用户无权访问的对象的查找字段,因此您在此处看到的错误。您需要将用户分配给可以访问这些对象的其他用户配置文件。

修改

假设您的用户确实拥有对对象的必要访问权限,我相信您还需要在用户的个人资料上选中“自定义应用程序”权限,以便他们能够修改销售团队。