Backport(バックポート) #2293
完了管理画面 招待メール送信 を利用すると同じメールアドレスを重複登録できる
100%
説明
Overview (現象)¶
管理画面「招待メール送信」を利用すると、同一アドレスで複数登録できてしまう
再現手順¶
1.管理画面「招待メール送信」にて new-member@example.com を招待。
→招待状1到着
2.再度、管理画面「招待メール送信」にて new-member@example.com を招待
→招待状2到着
3.招待状1から会員登録
→member id 2にて登録完了
4.ログアウトせずに招待状2から会員登録画面を表示
5.登録完了
→member id 3にて登録完了
Causes (原因)¶
本来であれば pc_addres_pre に重複するメールアドレスが存在した場合、
メンバーを追加せずに pc_address_token を更新するべきですが、
現状ではメンバーを新規に追加してしまっている状態です。
mysql> SELECT * FROM member_config WHERE value = 'new-member@example.com'; +----+-----------+----------------+------------------------+----------------+----------------------------------+---------------------+---------------------+ | id | member_id | name | value | value_datetime | name_value_hash | created_at | updated_at | +----+-----------+----------------+------------------------+----------------+----------------------------------+---------------------+---------------------+ | 5 | 2 | pc_address_pre | new-member@example.com | NULL | c10d06478a66688156179ad60fd8316c | 2010-12-02 12:03:51 | 2010-12-02 12:03:51 | | 10 | 3 | pc_address_pre | new-member@example.com | NULL | c10d06478a66688156179ad60fd8316c | 2010-12-02 12:04:53 | 2010-12-02 12:04:53 | | 15 | 4 | pc_address_pre | new-member@example.com | NULL | c10d06478a66688156179ad60fd8316c | 2010-12-02 12:04:55 | 2010-12-02 12:04:55 | +----+-----------+----------------+------------------------+----------------+----------------------------------+---------------------+---------------------+ 3 rows in set (0.00 sec)
Way to fix (修正内容)¶
メールアドレス重複時には MemberTable::createPre() を呼ばないようにする。
修正時の注意点として、
すでに新規登録を行っているメールアドレスであった場合に、
member_config に「is_admin_invited」を挿入する必要があります。
Yuya Watanabe さんが13年以上前に更新
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Yuya Watanabe にセット
Masato Nagasawa さんが13年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 ff33ac0a8e688ac5b119e88fd8e8702e3d115030 で適用されました。
Yuya Watanabe さんが13年以上前に更新
現在の修正だけでは、修正前にすでに送信されたメールに記載されたURLを用いると重複登録ができることを確認しました。
具体的には以下の手順を行うと重複登録が可能になります。
- 修正を行う前の環境で下記を行う
- 管理画面でメールアドレスAに招待メールを送る -> 招待状1
- 管理画面で同じメールアドレスAに招待メールを送る -> 招待状2
- 現在メールアドレスAで2通受信されていることを確認する
- 修正を施して現在修正後の環境で以下を行う
- 招待状1から会員登録
→member id 2にて登録完了 # 期待される結果ではない - ログアウトせずに招待状2から会員登録画面を表示
- 登録完了
→member id 3にて登録完了
- 招待状1から会員登録
本チケットの元であるチケットが完了状態になっているため、この問題については別チケットで扱うことになると思います。
Yuma Sakata さんが13年以上前に更新
テストしました。
- 3.4
[前提]
送信するアドレスはSNS登録済みである。
[手順]
1.管理画面の認証プラグイン設定(/pc_backend.php/plugin/list/type/auth)にアクセスする。
2.opAuthMailAddressPluginで招待モードを「招待なしでの登録を許可する」に設定する。
3.ログイン画面の新規登録から、SNS登録済みのアドレスに招待メール送信する。
[結果]
「メールアドレスが無効です。」とエラーメッセージが表示される。
- 3.6
[前提]
送信するアドレスはSNS登録済みである。
[手順]
1.管理画面の認証プラグイン設定(/pc_backend.php/plugin/list/type/auth)にアクセスする。
2.opAuthMailAddressPluginで招待モードを「招待なしでの登録を許可する」に設定する。
3.ログイン画面の新規登録から、SNS登録済みのアドレスに招待メール送信する。
[結果]
送信完了メッセージが表示されるが、メール受信されない。
3.4 と 3.6 で挙動が異なりますが、合わせなくてもよろしいでしょうか?
Minoru Takai さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
レビューしました。
master および 3.6.x 向けのチケットはレビューを担当していませんでしたが、このチケットの修正について不足しているのではないかと思う点がいくつかありました。
修正される内容:
- 1. 登録済みのメールアドレスに対して管理画面から招待状を送ることができてしまう
- 修正済み
- 2. (1.)の修正により、登録済みのメールアドレスに対して管理画面から招待状を送ろうとするとエラーメッセージが表示されるが、翻訳されていない
- 対応されていない
- 3. (1.)の修正前に(管理画面から)送った、登録済みのメールアドレスに対する招待状で登録ができてしまう
- 修正されていないが note-4, note-5 で既に言及されている
上記のうち、 1. のみが修正されていればよいものと見做してレビューを行いました。修正は OK です。
Yuma Sakata さんが13年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。