バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 仮会員を無効にしていても、仮会員として登録されてしまう

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nakamori
投稿日時: 2019/1/11 13:09
対応状況: −−−
半人前
登録日: 2018/4/25
居住地:
投稿: 12
仮会員を無効にしていても、仮会員として登録されてしまう
▼テンプレート
[EC-CUBE] EC-CUBE 3.0.16
[レンタルサーバ] カゴヤ
[OS] Linux
[PHP] 7.0
[データベース] MySQL5.6


管理画面の基本情報設定で、仮会員は無効にしています。
会員登録すると、通常は即本会員になりますが、
「ログインできない」というお客様から問い合わせがあり、
確認すると仮会員の状態で、dtb_customerのstatusが1になっていました。

その他の登録内容では特に不自然な点は見当たらず、
create_dateとupdate_dateも一致しているため、
会員登録後に更新されたわけではなさそうです。
非常にレアなケースかと思いますが、
仮会員になってしまう条件として、どんなことが考えられるでしょうか?

会員管理系のプラグインとしては、「会員ランクプラグイン for EC-CUBE3」を
使用しており、該当会員には初期ランクが適応されていました。
468
投稿日時: 2019/1/11 23:25
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1569
オンライン
Re: 仮会員を無効にしていても、仮会員として登録されてしまう
基本情報設定の仮会員を無効にしていた場合、デフォルトでは発生する事のない現象かと思います。

可能であれば、試しにダミーの情報で会員の新規登録を行い、結果を確認する事は難しいでしょうか?
本当は、プラグインを無効にした状態での会員の新規登録が確認できれば、
問題点の切り分けもしっかりと行えそうですが、
既に本番稼働してる環境であれば、プラグインの無効化まではしないほうがよさそうですね。
(テスト環境があれば良いのですが)


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

h_tanaka
投稿日時: 2019/2/18 17:32
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 651
Re: 仮会員を無効にしていても、仮会員として登録されてしまう
こちらでも同様の問題があり、解決しました。

現象としては、本会員登録すると、本会員登録完了ページが表示され、完了メールも飛ばされるのですが、会員ログインすることができず、会員管理で確認すると仮会員になってしまっていました。
仮会員の有効/無効によらず再現しました。

また、ソースとDBをまるごとコピーして検証環境を構築しましたが、何故か再現しませんでした。

こちらでは「お友達紹介プラグインwithP」を導入しており、管理画面の会員登録時にエラーを起こしていました。
このエラーを解決することで、フロントで本会員登録できるようになりました。

ただ、不思議なことにエラーが発生していた処理のフックポイントが管理画面の会員登録だけであり、なぜフロントで本会員登録できなかったのかがわかりませんでした。

本問題の対策としては、会員に関するプラグインを無効化、できなければevent.ymlをすべてコメントアウトすることで、どのプラグインが原因かの切り分けは可能かと思われます。


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

h_tanaka
投稿日時: 2019/2/20 11:33
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 651
Re: 仮会員を無効にしていても、仮会員として登録されてしまう
こちら、解決にいたっていませんでした。

ブラウザや端末を変えたり、システムやブラウザのセッションを削除したりして、何度か会員登録を試してみましたが、再現したりしなかったりします。
確実に再現させられる条件はまだわかっていません。

本会員登録できていない場合も、システムログには、次のようにアクティベート時の一連の処理の流れは出力されています。
本会員登録開始 
本会員登録完了
会員登録完了メール送信開始
会員登録完了メール送信完了 {"count":1}
ログイン済に変更 [864] 


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

h_tanaka
投稿日時: 2019/2/20 15:44
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 651
Re: 仮会員を無効にしていても、仮会員として登録されてしまう
本件、おそらく解決しました。

src/Eccube/Controller/EntryController.php
activate() 内、flush() の直後にトランザクションをcommitするようにしたところ、現象が起こらなくなりました。
(下記のソース内で★の処理を追加)

おそらくどこかでトランザクションが開始されたままcommitもrollbackもされず、DBに保存されなかったのだと思われます。
ただ、トランザクションを開始にしっぱなしにしているような怪しいソースはどこにも見当たらず、ログにもエラー等は出力されていなかったです。
また、再現条件も不明なままのため、確実に解決したかどうかはわかりません。

    /**
     * 会員のアクティベート(本会員化)を行う.
     *
     * @param Application $app
     * @param Request $request
     * @param $secret_key
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function activate(Application $app, Request $request, $secret_key)
    {
        $errors = $app['validator']->validateValue($secret_key, array(
                new Assert\NotBlank(),
                new Assert\Regex(array(
                    'pattern' => '/^[a-zA-Z0-9]+$/',
                ))
            )
        );

        if ($request->getMethod() === 'GET' && count($errors) === 0) {
            log_info('本会員登録開始');

            try {
                $Customer = $app['eccube.repository.customer']
                    ->getNonActiveCustomerBySecretKey($secret_key);
            } catch (\Exception $e) {
                throw new HttpException\NotFoundHttpException('※ 既に会員登録が完了しているか、無効なURLです。');
            }

            $CustomerStatus = $app['eccube.repository.customer_status']->find(CustomerStatus::ACTIVE);
            $Customer->setStatus($CustomerStatus);
            $app['orm.em']->persist($Customer);
            $app['orm.em']->flush();

            $app['orm.em']->getConnection()->commit();  // ★ 追加

            log_info('本会員登録完了');

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

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

            // 本会員登録してログイン状態にする
            $token = new UsernamePasswordToken($Customer, null, 'customer', array('ROLE_USER'));
            $this->getSecurity($app)->setToken($token);
            $request->getSession()->migrate(true, $app['config']['cookie_lifetime']);

            log_info('ログイン済に変更', array($app->user()->getId()));

            return $app->render('Entry/activate.twig');
        } else {
            throw new HttpException\AccessDeniedHttpException('不正なアクセスです。');
        }
    }


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

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


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は40,621名です
総投稿数は90,023件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1878
4
468
1569
5
yuh
1568
6
red
1212
7
umebius
1083
8
fukap
907
9
tsuji
837
10
shutta
827
11 ramrun 789
12
tao_s
691
13 karin 656
14
h_tanaka
651
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.