2011-12-14 3 views
1

Есть ли способ вернуть только учетные записи (используя SOQL), к которым у текущего пользователя есть доступ на запись?Как я могу запрашивать записи на основе прав пользователя?

Например, если я перехожу к определенной учетной записи и щелкаю по кнопке [Совместное использование], я могу увидеть список пользователей (и групп), которые имеют доступ к этой записи. При входе в систему как один из этих Пользователей я могу запустить инструкцию SOQL (через пользовательский контроллер на странице Visualforce), чтобы получить запись учетной записи. Тем не менее, я хочу, чтобы запись учетной записи возвращалась только в том случае, если у Пользователя есть разрешение на запись (или редактирование) этой записи. Есть идеи? Заранее спасибо!

ответ

1

Способ обеспечения совместного использования - использовать ключевые слова with sharing. Если по какой-либо причине вы не хотите этого делать, вы можете обернуть оператор DML в блок try, чтобы поймать DMLException. Вызовите getDmlType() об объекте исключения, чтобы узнать, был ли сбой связан с разрешением. Я думаю, что код состояния будет System.StatusCode.INSUFFICIENT_ACCESS_OR_READONLY. Вот несколько полный список status codes.

+0

Я использую ключевое слово 'with sharing', но я все еще получаю записи, которые не доступны для записи. –

+0

Хорошо, поэтому они можно писать, но не читать. Поэтому я думаю, что вам просто нужно сделать DML-вызов, а затем поймать исключение и обработать соответствующим образом. –

+0

Есть ли способ узнать перед вызовом DML? Я не обязательно хочу обновлять запись. –