操作
Bug(バグ) #1815
完了既に新規登録申請を行ったアドレスで2度目に新規登録申請を行うとInternal Server Errorになる
開始日:
2010-11-28
期日:
進捗率:
100%
予定工数:
3.6 で発生するか:
Yes
[QA]バグ通知済:
いいえ
3.8 で発生するか:
説明
Overview (現象)¶
管理画面のopAuthMailAddressPluginで招待モードを「招待なしでの登録を許可する」にした際に可能になる新規登録にて、1度新規登録申請を行い、本登録をせずにそのままにしている場合、2度目の新規登録申請を行うとエラーになります。
エラーは以下の通りです。
500 | Internal Server Error | Doctrine_Connection_Mysql_Exception SQLSTATE: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`openpne3`.`member_config`, CONSTRAINT `member_config_member_id_member_id` FOREIGN KEY (`member_id`) REFERENCES `member` (`id`) ON DELETE CASCADE)
Causes (原因)¶
opRequestRegisterURLForm::validateAddress() で member_config に 'pc_address_pre' が存在していた場合、
その MemberConfig オブジェクトから Member オブジェクトを取得するような処理が入ってる。
$this->member = $config->getMember();
しかし、このままではActivateビヘイビアが有効であるため、
レコードが取得できていない状態となっている。(新規登録の状態ではis_active=0であるため、但しオブジェクトの取得自体はできている)
結果的に opRequestRegisterURLForm::sendMail() で
$member->setConfig('pc_address_pre', $address);
としたときに、id が null の状態であるため、レコードの挿入に失敗している。
Way to fix (修正内容)¶
MemberConfig::getMember() する際に、Activateビヘイビアを無効にする。
$activation = opActivateBehavior::getEnabled(); opActivateBehavior::disable(); $this->member = $config->getMember(); if ($activation) { opActivateBehavior::enable(); }
Masato Nagasawa さんが約14年前に更新
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Masato Nagasawa にセット
Masato Nagasawa さんが約14年前に更新
すでに登録済みであった場合に MemberConfig::getMember() として Member オブジェクトを取得使用としている箇所で、
opActivateBehavior が有効になっているため、メンバー情報が取得できていない事が原因です。
Masato Nagasawa さんが約14年前に更新
- プロジェクト を OpenPNE 3 から opAuthMailAddressPlugin に変更
- [QA]バグ通知済 を いいえ にセット
Masato Nagasawa さんが13年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
a4fd6bcaa947b51d78a095e43d7d61940f649255 にて修正しました。
取り込みよろしくお願いします。
Naoya Tozuka さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
変更点確認しました。OKです。
Yuma Sakata さんが13年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。
Yuma Sakata さんが13年以上前に更新
「SNS登録済みのアドレスに管理画面から招待メール送信後、英語でエラー表示される」バグがありました。
こちらは #2234 で対応する予定です。
操作