2012-01-16 21 views
1

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

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

ответ

1

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

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

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

** Edit 25/01/2012 ** только что через это: http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/sforce_api_objects_userrecordaccess.htm?SearchType=Stem

Довольно уверен, что даст вам именно то, что вам нужно!

+0

Интеграция, поэтому в идеале я хотел бы иметь эту информацию в то же время, когда я запрашиваю записи. Я знаю, что есть объект OpportunityShare, который имеет некоторую информацию о разрешении, но я не уверен, что это правильный материал или я могу даже дойти до него при запросе моего пользовательского объекта. – CDelaney

+0

Я только что обновил свой ответ, чтобы добавить какую-то новую найденную информацию :) –

+0

Я надеялся избежать каких-либо дополнительных запросов, но по крайней мере я могу получить разрешения для всех строк всего за один дополнительный выстрел с этим. Спасибо – CDelaney

0

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

Если вы не используете «Совместное использование», то вершина не уважает модель совместного использования, и технически пользователь сможет обновлять данные, даже если у них нет доступа.

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

+0

Я хотел бы иметь возможность визуализировать страницу с визуальной разницей между записями, которые пользователь может и не может редактировать, поэтому обработка отказа от контроллера - не совсем решение. Я отредактировал свое оригинальное сообщение, чтобы немного уточнить. – CDelaney

Смежные вопросы