2012-01-16 3 views
1

私は機会にマスターディテールを持つカスタムオブジェクトを持っています。このカスタムオブジェクトにクエリを実行するときに、ユーザーが読み取りまたは読み取り/書き込みアクセス権を持っているかどうかを判断する方法はありますか?オブジェクトの親のユーザー権限レベルを照会しますか?

私のニーズを明確にするために、私は自分のページ(非ビジュアルフォース)を、読み込みアクセスのみのレコードと編集可能なレコードとの明確な区別でレンダリングする方法を探しています。

答えて

1

ユーザーは、機会に持っているのと同じアクセス権を持ちます。 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

インテグレーション、理想的には私はレコードのクエリと同時にこの情報を持っていたいと思います。私はいくつかの許可情報を持っているOpportunityShareオブジェクトがあることを知っていますが、それが正しいものかどうか、または私のカスタムオブジェクトを照会するときにそれに到達することさえできるかどうかはわかりません。 – CDelaney

+0

新しい情報を追加するために私の答えを更新しました:) –

+0

私は余分なクエリを避けたいと思っていましたが、少なくとも私はこれを使って1回の追加ショットですべての行のアクセス権を取得できます。ありがとうございます – CDelaney

0

アクセスレベルを調べる方法はわかりませんが、頂点クラスがWith Sharingキーワードを使用している場合は、オブジェクトの共有を尊重します。したがって、取得するデータを更新しようとするとあなたが捕まえることができるDML例外です。

共有を使用していない場合、apexは共有モデルを尊重しません。技術的には、ユーザーはアクセス権がなくてもデータを更新できます。

visualaceを使用している場合、LaceySnrによって指摘されているように、<apex:inputfield>要素は、ReadOnlyアクセスしか持たないユーザーに自動的に読み取り専用で表示されます。

+0

私は、ユーザーが編集することができない可能性があるレコード間の視覚的な違いを持つページをレンダリングできるようにしたいので、コントローラからのエラーを処理することはかなり解決策ではありません。私はちょっと明確にするためにオリジナルの投稿を編集しました。 – CDelaney

関連する問題