2012-09-11 24 views
2

我对我的组织具有管理API访问权限。我希望运行相同的SOQL查询,但返回的结果对于我的组织中的各种用户可见:为用户A运行“SELECT Name FROM Account”,应只返回用户A可访问的帐户名称。如何将SOQL结果限制为可供用户访问的结果

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

这是非常相似的:

Salesforce: impersonation using the API

但在这种情况下,我确实有对数据的访问,我只想把它过滤仿佛请求从一个特定的用户来了。它看起来有一个称为System.RunAs()的Apex“单元测试”方法,它看起来很接近,但我想通过REST运行它。

回答

1

我认为你可以使用HasReadAccessUserRecordAccess表过滤第一个SOQL查询。

您可以尝试先建立一组RecordIDs,然后使用这个来过滤器的帐户查询。

​​

official documentation

+0

感谢您的建议更多细节。我一直在研究UserRecordAccess,并且我不清楚它是否代表PDF“用户记录访问:敞篷”中描述的“对象记录,对象共享和组维护表”的逻辑联合,或者如果它是分开的,也许只是描述对象共享。任何想法? –

+0

UserRecordAccess与对象记录和用户有关。您可以将该表用作Records-Sharing-Groups的包装。这是我知道为特定用户过滤数据的唯一方式(您的原始问题:) –

+0

我刚做了一些测试,乍一看我认为这应该适用于我! “最多200条记录”部分有点不幸,但这可能就足够了。谢谢! –