如何将SOQL结果限制为用户可访问的结果

时间:2012-09-11 01:32:59

标签: salesforce

我的组织有管理员API访问权限。我想运行相同的SOQL查询,但是我的组织中的各个用户可以看到结果:对于用户A运行“SELECT Name FROM Account”,应该只返回用户A可以访问的帐户名。

我知道如果每个用户都为我的应用程序提供了他们的密码和安全令牌,这很容易,所以我可以以他们身份登录并运行查询,但我只想使用我的管理员帐户执行此操作。

这非常类似于:

Salesforce: impersonation using the API

但在这种情况下,我确实可以访问数据,我只想过滤它,好像请求来自特定用户。看起来有一个名为System.RunAs()的Apex“单元测试”方法看起来很接近,但我希望通过REST运行它。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用HasReadAccess表中的 UserRecordAccess 来过滤第一个SOQL查询。

您可以先尝试构建一组RecordIDs,然后使用此功能过滤帐户查询。

Set<ID> sRecordIDs = [SELECT RecordID FROM UserRecordAccess WHERE UserId = :u AND HasReadAccess = True];
Account[] accs =[SELECT ID,Name FROM Account WHERE Id in :sRecordIDs];

有关official documentation

的更多详情