/** * ログインを実行する. * * ログインを実行し, 成功した場合はユーザー情報をセッションに格納し, * true を返す. * モバイル端末の場合は, 携帯端末IDを保存する. * ログインに失敗した場合は, false を返す. * * @param string $login_email ログインメールアドレス * @param string $login_pass ログインパスワード * @return boolean|null ログインに成功した場合 true; 失敗した場合 false */ public function doLogin($login_email, $login_pass) { switch (Application::alias('eccube.display')->detectDevice()) { case DEVICE_TYPE_MOBILE: if (!$this->getCustomerDataFromMobilePhoneIdPass($login_pass) && !$this->getCustomerDataFromEmailPass($login_pass, $login_email, true)) { return false; } else { // Session Fixation対策 SessionHelper::regenerateSID(); $this->updateMobilePhoneId(); return true; } break; case DEVICE_TYPE_SMARTPHONE: case DEVICE_TYPE_PC: default: if (!$this->getCustomerDataFromEmailPass($login_pass, $login_email)) { return false; } else { // Session Fixation対策 SessionHelper::regenerateSID(); return true; } break; } }
/** * ログイン情報セッション登録 * * @param integer $member_id メンバーID * @param string $login_id ログインID文字列 * @param integer $authority 権限ID * @param string $login_name ログイン表示名 * @param string $last_login 最終ログイン日時(YYYY/MM/DD HH:ii:ss形式) またはNULL * @return string $sid 設定したセッションのセッションID */ public function lfSetLoginSession($member_id, $login_id, $authority, $login_name, $last_login) { // Session Fixation対策 SessionHelper::regenerateSID(); $objSess = new Session(); // 認証済みの設定 $objSess->SetSession('cert', CERT_STRING); $objSess->SetSession('member_id', $member_id); $objSess->SetSession('login_id', $login_id); $objSess->SetSession('authority', $authority); $objSess->SetSession('login_name', $login_name); $objSess->SetSession('uniqid', $objSess->getUniqId()); if (Utils::isBlank($last_login)) { $objSess->SetSession('last_login', date('Y-m-d H:i:s')); } else { $objSess->SetSession('last_login', $last_login); } return $objSess->GetSID(); }