クローズドサイトプラグインを使ってEC-CUBE(2.13)でクローズド通販サイトを作った時のメモ。
クローズドサイトプラグインを使った場合、未ログインユーザーがアクセスするとログインページにリダイレクトされます。そしてログインページでログインをするとマイページが表示されます。
通常の通販サイトですとこれで良いと思いますが、今回クローズドサイトを作っているのでログイン後の画面遷移をトップページ変更しました。
変更方法は以下の通りです。
LC_Page_Mypage_Login_Exクラスに以下のメソッドを追加。
/**
* Page のAction.
*
* @return void
*/
public function action()
{
//決済処理中ステータスのロールバック
$objPurchase = new SC_Helper_Purchase_Ex();
$objPurchase->cancelPendingOrder(PENDING_ORDER_CANCEL_FLAG);
// ログインページから画面遷移の場合はトップページへ
if ($this->lfCheckReferer()) {
SC_Response_Ex::sendRedirect(TOP_URL);
}else{
SC_Response_Ex::sendRedirect(DIR_INDEX_PATH);
}
}
/**
* login.php からの遷移の妥当性をチェックする
*
* 以下の内容をチェックし, 妥当であれば true を返す.
* 1. ログインページからの遷移かどうか
* 2. PC及びスマートフォンかどうか
*
* @access protected
* @return boolean login.php からの妥当な遷移であれば true
*/
public function lfCheckReferer()
{
$arrRefererParseUrl = parse_url($_SERVER['HTTP_REFERER']);
$referer_urlpath = $arrRefererParseUrl['path'];
$login_urlpath = ROOT_URLPATH . 'mypage/login.php';
$allowed_urlpath = array(
$login_urlpath,
);
if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE
&& !in_array($referer_urlpath, $allowed_urlpath)) {
return false;
}
return true;
}
これでログイン後、トップページへ画面遷移されるようになります。
