[Force.comでWeb制作]カスタマーポータルのログインチェック処理

By |7月 9, 2011|Force.comでWeb制作, Javascript, |


以前も紹介しましたが、カスタマーポータルのログインに失敗すると自動的にカスタマーポータルのログインURLのページに遷移してしまいます。
(ログインURLはsalesforceの設定上、変えることができません)

[Force.comでWeb制作]カスタマーポータルへのログイン画面
[Force.comでWeb制作]カスタマーポータルへのログイン画面2

なので、ログインボタン押下時にユーザID及びパスワードが正しいかチェックをする必要がありますが、最近以下のような方法を作り込んだので紹介させて頂きます。

ajax toolkitsforce.connection.login関数を使ってログイン画面のVisualforceページに以下を追加します。

・ajax toolkit(connection.js)の読み込み

[java]
<apex:includeScript value="/soap/ajax/22.0/connection.js"/>
[/java]

・ID、パスワードを判定するJavaScript

※通常であればlogin関数をそのまま呼べばいいのですがカスタマーポータルの場合Soapヘッダーを変更しないとカスタマーポータルのユーザを判定してくれません。
やり方はsforce.connection.loginScopeHeaderorganizationId(組織のID)とportalId(カスタマーポータルのID)に値を設定します。

例:
/**
* ユーザIDとパスワードの入力チェック
*/

[java]
function checklogin(un,pw){
try{
sforce.connection.loginScopeHeader={};
sforce.connection.loginScopeHeader.organizationId = ‘{!$Organization.Id}’;
sforce.connection.loginScopeHeader.portalId = ‘06010000000HPfh’;
var result = sforce.connection.login(un, pw);
return true;
}catch(error) {
return false;
}
}
[/java]

上記の関数で戻り値がtrueの場合は正しいカスタマーポータルのユーザであることが判定できます。

参考:
login関数
soapHeader