Bug(バグ) #3187
完了メンバー登録時にデータが不正な状態になった場合のメッセージ表示が適切でない
0%
説明
Overview (現象)¶
メンバー登録時にデータが不正な状態になった場合のメッセージ表示が異なる
Environment (再現バージョン)¶
OpenPNE3.6.3
Way to repro (再現手順)¶
1. 招待メールからユーザ登録を実施する
2. is_activeフラグが0のまま登録終了する(ログインできない)
3. 再度招待メールの登録用URLをブラウザで表示する
Way to fix (修正内容)¶
備考¶
is_acriveフラグが1(通常)の場合、「このページにはアクセスできません。」とエラーメッセージが表示されます。
is_acriveフラグが0(チケットの再現手順)の場合、「この登録用URLは携帯電話専用です。」とエラーメッセージが表示されます。
Yuma Sakata さんが約12年前に更新
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Youichi Kimura にセット
修正パッチ作成済みですが、
手元の環境で is_active=0 の状態が再現できないため、動作確認してません。
--- a/apps/pc_frontend/modules/opAuthMailAddress/actions/actions.class.php
+++ b/apps/pc_frontend/modules/opAuthMailAddress/actions/actions.class.php
@@ -53,6 +53,7 @@ class opAuthMailAddressActions extends opAuthMailAddressPluginAction
opActivateBehavior::disable();
$authMode = $memberConfig->getMember()->getConfig('register_auth_mode');
$pcAddressPre = $memberConfig->getMember()->getConfig('pc_address_pre');
+ $mobileAddressPre = $memberConfig->getMember()->getConfig('mobile_address_pre');
opActivateBehavior::enable();
if ('MobileUID' === $authMode)
@@ -60,6 +61,7 @@ class opAuthMailAddressActions extends opAuthMailAddressPluginAction
$authMode = 'MailAddress';
}
$this->forward404Unless($authMode === $this->getUser()->getCurrentAuthMode());
+ $this->forward404Unless($pcAddressPre || $mobileAddressPre);
if (!$pcAddressPre)
{
Yuma Sakata さんが約12年前に更新
- ステータス を New(新規) から Accepted(着手) に変更
@ukimura
DB の設定いじって is_active=0 の状態を再現して、note-1 修正パッチの動作確認お願いします。
Youichi Kimura さんが約12年前に更新
この問題の原因となっている #3150 の修正が完了していない状態で修正を行うため、現時点での調査や報告されている現象からどのような不具合が発生しているか仮定して修正を行います。
- 仮定
- member/registerInput (GET) にて新規に登録するメンバーの情報を入力し「新規登録」ボタンが押される
- member/registerInput (POST) にて member_config テーブル内にある登録中のメンバーの pc_address_pre が pc_address に変更される (PCの場合)
- その後、opAuthMailAddress/registerEnd にリダイレクトされ登録中のメンバーの is_active が 1 にセットされるのが正常な動作であるが、「新規登録」ボタンの連打等によってこのページのロードが行われず is_active の値が 0 のままになった
上記の内容が正しければ pc_address_pre 及び mobile_address_pre が存在せず、かつ member.is_active が 0 のまま となっているメンバーが #3150 によって発生した不正なメンバー情報と推定できます。
is_acriveフラグが1(通常)の場合、「このページにはアクセスできません。」とエラーメッセージが表示されます。
is_acriveフラグが0(チケットの再現手順)の場合、「この登録用URLは携帯電話専用です。」とエラーメッセージが表示されます。
チケットに書かれている「この登録用URLは携帯電話専用です。」という出力は、下記のコードで sfView::ERROR が返されたときに表示されます。
(apps/pc_frontend/modules/opAuthMailAddress/actions/actions.class.php)
opActivateBehavior::disable();
$authMode = $memberConfig->getMember()->getConfig('register_auth_mode');
$pcAddressPre = $memberConfig->getMember()->getConfig('pc_address_pre');
opActivateBehavior::enable();
if ('MobileUID' === $authMode)
{
$authMode = 'MailAddress';
}
$this->forward404Unless($authMode === $this->getUser()->getCurrentAuthMode());
if (!$pcAddressPre)
{
return sfView::ERROR;
}
現時点での実装で sfView::ERROR が返されるのは pc_address_pre が存在しない 場合であり、この場合は「携帯電話専用の新規登録トークン」をPCからアクセスしようとしているものと判断するようです。
#3150 によって発生する不正なメンバーに対して「このページにはアクセスできません。」と表示するのであれば、
- pc_address_pre は存在しないが、mobile_address_pre は存在する (携帯用の登録トークンにPCからアクセス)
- => 「この登録用URLは携帯電話専用です。」と表示 (sfView::ERROR)
- pc_address_pre は存在せず、mobile_address_pre も存在しない (#3150 によって発生した不正なユーザー)
- => 「このページにはアクセスできません。」と表示 (foward404)
- pc_address_pre は存在する
- => 新規登録処理に進む
として判定するのが妥当だと思います。この方法による修正案は note-1 の通りです。
Youichi Kimura さんが約12年前に更新
- プロジェクト を OpenPNE 3 から opAuthMailAddressPlugin に変更
- [QA]バグ通知済 を いいえ にセット
Youichi Kimura さんが約12年前に更新
- 題名 を メンバー登録時にデータが不正な状態になった場合のメッセージ表示が異なる から メンバー登録時にデータが不正な状態になった場合のメッセージ表示が適切でない に変更
Youichi Kimura さんが約12年前に更新
- ステータス を Accepted(着手) から Won't fix(対応せず) に変更
このチケットで指摘されている「この登録用URLは携帯電話専用です。」のメッセージについて、最新の opAuthMailAddressPlugin では「メールアドレスが登録されていません。」に変更されていました。よって当チケットの修正は不要です。