[Salesforce]JSENCODE

JSENCODE

バックスラッシュ (\) などのエスケープ文字をアポストロフィー (‘) などの安全でない JavaScript 文字の前に挿入して、JavaScript で使用するテキスト文字列や差し込み項目値をエンコードします。

ページの読み込み時に JavaScript が実行され、アラートが表示されます。

<script>var ret = "foo";alert('xss');//";</script>

この場合、JavaScript が実行されないように、JSENCODE 関数を使用します。例

<script>var ret = "{!JSENCODE($CurrentPage.parameters.retURL)}";</script>

[JavaScript].shift()

.shift()

shift()メソッドは配列から最初の要素を削除して、その要素を返します。このメソッドは配列のlengthを変更します。

arr.shift()
例
var myFish = ["angel", "clown", "mandarin", "surgeon"];
console.log("myFish before: " + myFish);
var shifted = myFish.shift();
console.log("myFish after: " + myFish);
console.log("Removed this element: " + shifted);

結果
myFish before: angel,clown,mandarin,surgeon
myFish after: clown,mandarin,surgeon
Removed this element: angel

[Salesforce]AggregateResultリストから項目値取得

AggregateResultリストから項目値取得

        List<String> testQueueUserIdList = new List<String>();

        for(AggregateResult gmObj : [SELECT UserOrGroupId, COUNT( Id ) 
                                FROM GroupMember 
                                WHERE GroupId IN ( SELECT Id FROM Group WHERE Type = 'Queue' And DeveloperName = 'testQueue') 
                                GROUP BY UserOrGroupId]){
            testQueueUserIdList.add(String.valueOf(gmObj.get('UserOrGroupId')));
        }
        System.debug('testQueueUserIdList : ' + testQueueUserIdList);

[Salesforce]inherited sharing

inherited sharing

クラスで inherited sharing キーワードを使用して、そのコール元のクラスの共有モードでクラスを実行します。

この例では、inherited sharing のある Apex クラスとその Apex コードの Visualforce 呼び出しを宣言します。inherited sharing 宣言により、実行ユーザが共有アクセス権を持つ取引先責任者のみが表示されます。この宣言が省略されている場合、安全でないデフォルトの動作により、ユーザが参照権限を持たない取引先責任者も表示されます。

public inherited sharing class InheritedSharingClass {
    public List<Contact> getAllTheSecrets() {
        return [SELECT Name FROM Contact];
    }
}