Memos About Salesforce

Salesforceにハマってたこと!

Salesforce SOQL APEX 権限

f:id:jude2016:20190612141027p:plain
権限

こんにちは、管理人の@Salesforce.Zです。

開発者であるあなた、書いたApexクラスはどのユーザで実行するかをイメージしてコーディングをしていますでしょうか

する人がいる、していない人もいると思います。

何も考えずにコーディングした結果として、権限の違うユーザでタブを押下後に削除ボタンや更新ボタンなどの操作によって、どこかでエラー発生し得るんです。

ApexTriggerやApexBatchなど、どのユーザが実行しても権限に関係な処理を実行したい場合もあります。

やっぱり、コーディングでは、必要に応じて判定処理を入れることでより品質の高いコードにしたほうがいいでしょう。

読んだら得ること

★ プロファイルの権限とApexレベルの権限確認

目次

権限チェック

権限をチェックするにはプロファイルや権限セットなどでできます。

オブジェクトの権限セキュティチェック

f:id:jude2016:20190612143601p:plain オブジェクトの権限チェックを行うことで権限の無いユーザが誤って処理を実行するのを防ぐことができます。また判定結果で対象外と判定された際にメッセージを表示するようにしておけばエラー原因を特定しやすくなります。

APEXでチェックするには

アクセス制御メソッドをコールする方法の例を示します

if (Schema.sObjectType.Contact.fields.Email.isUpdateable()) {
   // Update contact phone number
}

if (Schema.sObjectType.Contact.fields.Email.isCreateable()) {
   // Create new contact
}

if (Schema.sObjectType.Contact.fields.Email.isAccessible()) {
   Contact c = [SELECT Email FROM Contact WHERE Id= :Id];
}

if (Schema.sObjectType.Contact.isDeletable()) {
   // Delete contact
}

//オブジェクトの参照権限判定
if(Schema.sObjectType.Account.isAccessible()){
    //処理
}
//オブジェクトの作成権限判定
if(Schema.sObjectType.Account. isCreateable()){
    //処理
}
//オブジェクトの編集権限判定
if(Schema.sObjectType.Account. isUpdateable()){
    //処理
}
//オブジェクトの削除権限判定
if(Schema.sObjectType.Account. isDeletable()){
    //処理
}

終わりに

「デザイン思考」はすべての企業が抱える課題を解決するSalesforceブログの1記事を共有します。

スナンドーは共通する課題として、次の5つを示しました。

1:デジタルによってビジネスを推進したい

2:固有のカスタマーエクスペリエンスを提供して差別化したい

3:社内のサイロをなくしてデータを統合したい、正しいチームを正しい人材で作りたい

4:社内でイノベーションの文化を推進したい

5:従業員の能力を育成し、高めたい

この5つの課題解決に、デザイン思考が役に立つというわけです。

説明:新しい製品のヒントは、人間の言葉からではなく、人間の行動観察から始まるというデザイン思考。行動の共感・矛盾から本当にお客様が欲しているものをデザインする。

リファレンス

Enforcing CRUD and FLS

オブジェクト権限と項目権限の適用