2012-09-11 28 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條記錄」部分有點不幸,但這可能就足夠了。謝謝! –