Ejemplo n.º 1
0
 /**
  * 有効な管理者ID/PASSかどうかチェックする
  *
  * @param  string  $member_id       ログインID文字列
  * @param  string  $member_password ログインパスワード文字列
  * @return boolean ログイン情報が有効な場合 true
  */
 protected function checkMemberAccount($member_id, $member_password)
 {
     $objQuery = Application::alias('eccube.query');
     //パスワード、saltの取得
     $cols = 'password, salt';
     $table = 'dtb_member';
     $where = 'login_id = ? AND del_flg <> 1 AND work = 1';
     $arrData = $objQuery->getRow($cols, $table, $where, array($member_id));
     if (Utils::isBlank($arrData)) {
         return false;
     }
     // ユーザー入力パスワードの判定
     if (Utils::sfIsMatchHashPassword($member_password, $arrData['password'], $arrData['salt'])) {
         return true;
     }
     return false;
 }
Ejemplo n.º 2
0
 /**
  * 秘密の質問確認
  *
  * @param  array  $arrForm     フォーム入力値
  * @param  array  $arrReminder リマインダー質問リスト
  * @return string エラー文字列 問題が無ければNULL
  */
 public function lfCheckForgotSecret(&$arrForm, &$arrReminder)
 {
     $errmsg = '';
     $objQuery = Application::alias('eccube.query');
     $cols = 'customer_id, reminder, reminder_answer, salt';
     $table = 'dtb_customer';
     $where = '(email = ? OR email_mobile = ?)' . ' AND name01 = ? AND name02 = ?' . ' AND status = 2 AND del_flg = 0';
     $arrVal = array($arrForm['email'], $arrForm['email'], $arrForm['name01'], $arrForm['name02']);
     $result = $objQuery->select($cols, $table, $where, $arrVal);
     if (isset($result[0]['reminder']) and isset($arrReminder[$result[0]['reminder']]) and $result[0]['reminder'] == $arrForm['reminder']) {
         $is_authorized = false;
         if (empty($result[0]['salt'])) {
             // 旧バージョン(2.11未満)からの移行を考慮
             if ($result[0]['reminder_answer'] == $arrForm['reminder_answer']) {
                 $is_authorized = true;
             }
         } elseif (Utils::sfIsMatchHashPassword($arrForm['reminder_answer'], $result[0]['reminder_answer'], $result[0]['salt'])) {
             $is_authorized = true;
         }
         if ($is_authorized) {
             // 秘密の答えが一致
             // 新しいパスワードを設定する
             $new_password = GcUtils::gfMakePassword(8);
             if (FORGOT_MAIL == 1) {
                 // メールで変更通知をする
                 /* @var $objDb DbHelper */
                 $objDb = Application::alias('eccube.helper.db');
                 $CONF = $objDb->getBasisData();
                 $this->lfSendMail($CONF, $arrForm['email'], $arrForm['name01'], $new_password);
             }
             $sqlval = array();
             $sqlval['password'] = $new_password;
             Application::alias('eccube.helper.customer')->sfEditCustomerData($sqlval, $result[0]['customer_id']);
             $arrForm['new_password'] = $new_password;
         } else {
             // 秘密の答えが一致しなかった
             $errmsg = '秘密の質問が一致しませんでした。';
         }
     } else {
         //不正なアクセス リマインダー値が前画面と異なる。
         // 新リファクタリング基準ではここで遷移は不許可なのでエラー表示
         //Utils::sfDispSiteError(PAGE_ERROR, '', true);
         $errmsg = '秘密の質問が一致しませんでした。';
     }
     return $errmsg;
 }
Ejemplo n.º 3
0
 /**
  * 携帯端末IDを使用して会員を検索し、パスワードの照合を行う。
  * パスワードが合っている場合は会員情報を取得する。
  *
  * @param  string  $pass パスワード
  * @return boolean 該当する会員が存在し、パスワードが合っている場合は true、
  *                 それ以外の場合は false を返す。
  */
 public function getCustomerDataFromMobilePhoneIdPass($pass)
 {
     //docomo用にデータを取り出す。
     if (MobileUserAgent::getCarrier() == 'docomo') {
         if ($_SESSION['mobile']['phone_id'] == '' && strlen($_SESSION['mobile']['phone_id']) == 0) {
             $_SESSION['mobile']['phone_id'] = MobileUserAgent::getId();
         }
     }
     if (!isset($_SESSION['mobile']['phone_id']) || $_SESSION['mobile']['phone_id'] === false) {
         return false;
     }
     // 携帯端末IDが一致し、本登録された会員を検索する。
     $sql = 'SELECT * FROM dtb_customer WHERE mobile_phone_id = ? AND del_flg = 0 AND status = 2';
     $objQuery = Application::alias('eccube.query');
     @(list($data) = $objQuery->getAll($sql, array($_SESSION['mobile']['phone_id'])));
     // パスワードが合っている場合は、会員情報をcustomer_dataに格納してtrueを返す。
     if (Utils::sfIsMatchHashPassword($pass, $data['password'], $data['salt'])) {
         $this->customer_data = $data;
         $this->startSession();
         return true;
     }
     return false;
 }