[Force.comでWeb制作]カスタマーポータルのログインチェック処理
以前も紹介しましたが、カスタマーポータルのログインに失敗すると自動的にカスタマーポータルのログインURLのページに遷移してしまいます。
(ログインURLはsalesforceの設定上、変えることができません)
[Force.comでWeb制作]カスタマーポータルへのログイン画面
[Force.comでWeb制作]カスタマーポータルへのログイン画面2
なので、ログインボタン押下時にユーザID及びパスワードが正しいかチェックをする必要がありますが、最近以下のような方法を作り込んだので紹介させて頂きます。
ajax toolkitのsforce.connection.login関数を使ってログイン画面のVisualforceページに以下を追加します。
・ajax toolkit(connection.js)の読み込み
[java]
<apex:includeScript value="/soap/ajax/22.0/connection.js"/>
[/java]
・ID、パスワードを判定するJavaScript
※通常であればlogin関数をそのまま呼べばいいのですがカスタマーポータルの場合Soapヘッダーを変更しないとカスタマーポータルのユーザを判定してくれません。
やり方はsforce.connection.loginScopeHeaderのorganizationId(組織の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