バージョン選択

フォーラム

メニュー

オンライン状況

28 人のユーザが現在オンラインです。 (18 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 28
もっと...

サイト内検索

質問 > フロント機能 > パスワードの再発行ができない

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/5/29 16:34
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1646
パスワードの再発行ができない
EC-CUBE3.0.14

パスワードの再発行ができません。
調査していますが原因がわかりません。。

EC-CUBE本体はカスタマイズしていますが、パスワードまわりはカスタマイズしていません。
現象が発生する数日前にEC-CUBE3.0.13から3.0.14にアップデートしましたが、それ以前からこの現象が起こっていたかどうかはわかりません。

■再現手順
1. /forgot にてメールアドレスを入力し、次へ
2. 送信されたメールに記載のURL /forgot/reset/{reset_key} にアクセスし、新しいパスワードを発行
3. ログインページを表示し、送信されたメールに記載のパスワードにてログイン
 →ログインできない

DBを確認したところ、パスワードが変更されていませんでした。
テストアカウントで試したところ、上記手順後に再発行前のパスワードでログインできたため、やはりパスワードが変更されていないようです。

src/Eccube/Controller/ForgotController.php をデバッグしたところ、ここではパスワードの変更処理は正常に動作しているように見受けられました。

    public function reset(Application $app, Request $request, $reset_key)
    {
        $errors = $app['validator']->validateValue($reset_key, array(
            new Assert\NotBlank(),
            new Assert\Regex(array(
                'pattern' => '/^[a-zA-Z0-9]+$/',
            )))
        );

        if ('GET' === $request->getMethod()
                && count($errors) === 0) {
            try {
                $Customer = $app['eccube.repository.customer']
                    ->getActiveCustomerByResetKey($reset_key);
            } catch (\Exception $e) {
                throw new HttpException\NotFoundHttpException('有効期限が切れているか、無効なURLです。');
            }
dump($Customer->getPassword());    // ★ 暗号化された変更前のパスワードが出力された

            // パスワードの発行・更新
            $pass = $app['eccube.repository.customer']->getResetPassword();
            $Customer->setPassword($pass);

            // 発行したパスワードの暗号化
            if ($Customer->getSalt() === null) {
                $Customer->setSalt($app['eccube.repository.customer']->createSalt(5));
            }
            $encPass = $app['eccube.repository.customer']->encryptPassword($app, $Customer);
            $Customer->setPassword($encPass);
dump($encPass);    // ★ 暗号化された変更後のパスワードが出力された

            $Customer->setResetKey(null);

            // パスワードを更新
            $app['orm.em']->persist($Customer);
            $app['orm.em']->flush();

dump($Customer->getPassword());    // ★ 暗号化された変更後のパスワードが出力された

            $event = new EventArgs(
                array(
                    'Customer' => $Customer,
                ),
                $request
            );
            $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_FORGOT_RESET_COMPLETE, $event);

            // メール送信
            $app['eccube.service.mail']->sendPasswordResetCompleteMail($Customer, $pass);

            // ログ出力
            $app['monolog']->addInfo(
                'reset password complete:' . "{$Customer->getId()} {$Customer->getEmail()} {$request->getClientIp()}"
            );
        } else {
            throw new HttpException\AccessDeniedHttpException('不正なアクセスです。');
        }
dump($Customer->getPassword());    // ★ 暗号化された変更後のパスワードが出力された

        return $app->render('Forgot/reset.twig');
    }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2018/5/29 17:20
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1646
Re: パスワードの再発行ができない
自己解決しました。

index.php でエラーが発生しており、このエラーを改修したところパスワード再発行も正常に動作しました。
パスワード再発行処理を抜けた後にエラーになっていたため処理がロールバックされていたようです。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,840名です
総投稿数は109,985件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1291
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.