Запросить уровень разрешений пользователя для родительского объекта? - PullRequest
1 голос
/ 17 января 2012

У меня есть пользовательский объект с мастер-детализацией.Есть ли способ определить, имеет ли пользователь право на чтение или чтение / запись при запросе этого пользовательского объекта?

Чтобы прояснить мои потребности, я ищу способ визуализации моей страницы (невизуальной) счеткое различие между записями, к которым они имеют доступ только для чтения, и записями, в которых они могут редактировать.

Ответы [ 3 ]

1 голос
/ 06 апреля 2012

Это может содержать ответ на ваш вопрос http://salesforceblogger.blogspot.com/2012/04/query-user-access-level-in-apex.html

Существует таблица UserRecordAccess, которая предоставляется с помощью API 24.0, с помощью которой вы можете легко проверять доступ вместо того, чтобы стучать головой по общему объекту.

1 голос
/ 17 января 2012

Пользователь будет иметь такой же доступ к нему, как и возможность. Объект Profile предоставляет разрешения, но не позволяет вам узнать о настройках CRUD для объектов.

Вы создаете интеграционную часть или работаете с Visualforce? Если вы используете Visualforce, интерфейс автоматически будет соблюдать меры безопасности, скрывая данные, которые им не разрешено видеть, и делая поля доступными для чтения только при использовании <apex:inputField>, если у них нет разрешения на запись в поле.

** Редактировать ** Может быть, у кого-то найдется лучшее решение, но как насчет попытки обновить записи, которые вы запрашиваете, сохраняя, были ли каждая запись успешной или неудачной, а затем используя это для управления интерфейсом? Немного хак, если я найду что-нибудь еще, я обязательно обновлюсь.

** Изменить 25/01/2012 ** Только что наткнулся на это: http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/sforce_api_objects_userrecordaccess.htm?SearchType=Stem

Уверен, это даст вам именно то, что вам нужно!

0 голосов
/ 17 января 2012

Я не знаю, как сделать запрос, чтобы выяснить уровень доступа, однако, если ваш класс apex использует ключевое слово With Sharing, он будет учитывать совместное использование объекта, поэтому при попытке обновить данные вы получите DML исключение, которое вы можете поймать.

Если вы не используете With Sharing, apex не уважает модель Sharing, и технически пользователь сможет обновить данные, даже если у них нет доступа.

Как указал LaceySnr, если вы используете visualforce, элемент <apex:inputfield> будет автоматически отображаться только для чтения, если у него есть только доступ ReadOnly.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...