Security クラス
名前空間
使用方法
現在のユーザの作成、参照、更新、または更新/挿入のアクセス権限のコンテキストでは、Security クラスのメソッドを使用して、次の操作を行いま��。
- クエリおよびサブクエリの結果から非表示の項目を削除する
- 例外を発生することなく、DML 操作の前にアクセスできない項目を削除する
- 信頼されないソースからの並列化された sObject をサニタイズする
Security のメソッド
Security のメソッドは次のとおりです。
stripInaccessible(accessCheckType, sourceRecords, enforceRootObjectCRUD)
ソースレコードから、現在のユーザの項目レベルセキュリティチェックに失敗した項目が除外された sObject のリストを作成します。このメソッドでは、オブジェクトレベルのアクセス権チェックを適用するオプションも提供されます。
署名
public static System.SObjectAccessDecision stripInaccessible(System.AccessType accessCheckType, List<SObject> sourceRecords, Boolean enforceRootObjectCRUD)
パラメータ
- accessCheckType
- 型: System.AccessType
- AccessType 列挙の値を使用します。このパラメータは、実行される項目レベルのアクセスチェックの種別を決定します。現在のユーザの項目レベルのアクセス権を確認するには、Schema.DescribeFieldResult メソッド — isCreatable()、isAccessible()、または isUpdatable() を使用します。
- sourceRecords
- 型: List<SObject>
- 現在のユーザ操作のコンテキストで、アクセスできない項目についてチェックされる sObject のリスト。
- enforceRootObjectCRUD
- 型: Boolean
- オブジェクトレベルのアクセスチェックを実行するかどうかを示します。このパラメータが true に設定されていて、アクセスチェックが失敗した場合、メソッドは例外をスローします。この省略可能なパラメータのデフォルト値は true です。
戻り値
例
この例では、ユーザに商談の Probability 項目を作成する権限はありません。
1List<Opportunity> opportunities = new List<Opportunity>{
2 new Opportunity(Name='Opportunity1'),
3 new Opportunity(Name='Opportunity2', Probability=95)
4};
5
6// Strip fields that are not creatable
7SObjectAccessDecision decision = Security.stripInaccessible(
8 AccessType.CREATABLE,
9 opportunities);
10
11// Print stripped records
12for (SObject strippedOpportunity : decision.getRecords()) {
13 System.debug(strippedOpportunity);
14}
15
16// Print modified indexes
17System.debug(decision.getModifiedIndexes());
18
19// Print removed fields
20System.debug(decision.getRemovedFields());
21
22//Lines from output log
23//|DEBUG|Opportunity:{Name=Opportunity1}
24//|DEBUG|Opportunity:{Name=Opportunity2}
25//|DEBUG|{1}
26//|DEBUG|{Opportunity={Probability}}stripInaccessible(accessCheckType, sourceRecords)
署名
public static System.SObjectAccessDecision stripInaccessible(System.AccessType accessCheckType, List<SObject> sourceRecords)
パラメータ
- accessCheckType
- 型: System.AccessType
- AccessType 列挙の値を使用します。このパラメータは、実行される項目レベルのアクセスチェックの種別を決定します。現在のユーザの項目レベルのアクセス権を確認するには、Schema.DescribeFieldResult メソッド — isCreatable()、isAccessible()、または isUpdatable() を使用します。
- sourceRecords
- 型: List<SObject>
- 現在のユーザ操作のコンテキストで、アクセスできない項目についてチェックされる sObject のリスト。
戻り値
例
この例では、ユーザにキャンペーンの ActualCost 項目を読み取る権限はありません。
1List<Campaign> campaigns = new List<Campaign>{
2 new Campaign(Name='Campaign1', BudgetedCost=1000, ActualCost=2000),
3 new Campaign(Name='Campaign2', BudgetedCost=4000, ActualCost=1500)
4};
5insert campaigns;
6
7// Strip fields that are not readable
8SObjectAccessDecision decision = Security.stripInaccessible(
9 AccessType.READABLE,
10 [SELECT Name, BudgetedCost, ActualCost from Campaign]);
11
12// Print stripped records
13for (SObject strippedCampaign : decision.getRecords()) {
14 System.debug(strippedCampaign); // Does not display ActualCost
15}
16
17// Print modified indexes
18System.debug(decision.getModifiedIndexes());
19
20// Print removed fields
21System.debug(decision.getRemovedFields());
22
23//Lines from output log
24//|DEBUG|Campaign:{Name=Campaign1, BudgetedCost=1000, Id=701xx00000011nhAAA}
25//|DEBUG|Campaign:{Name=Campaign2, BudgetedCost=4000, Id=701xx00000011niAAA}
26//|DEBUG|{0, 1}
27//|DEBUG|{Campaign={ActualCost}}