プロジェクト

全般

プロフィール

Bug(バグ) #1668

opAuthRegisterFormMailAddress::doSave()の$memberConfig->setName()の処理で、レコードの存在チェックがない

Hidenori Goto13年以上前に追加. 12年以上前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2010-10-09
期日:
進捗率:

100%

3.6 で発生するか:
Yes
[QA]バグ通知済:
いいえ
3.8 で発生するか:
Unknown (未調査)

説明

詳細

opAuthRegisterFormMailAddressクラスのdoSave()メソッドで、事前に登録されたメールアドレス(mobile_address_preまたはpc_address_pre)を正式なアドレス(mobile_addressまたはpc_address)に付け替える(member_configレコードのnameを変更する)処理を行っているが、mobileアプリケーションの場合はmobile_address_pre、そうでない場合はpc_address_preのレコードが存在する前提のコードになっている。

例えば以下のような(割と容易な)手順で、mobileアプリケーションからの登録にもかかわらずmobile_address_preが存在しないという状況になる

  1. 管理画面からPC系メールアドレス(gmailなど)宛に招待を送る
  2. 招待を受け取ったユーザーが、メールを携帯に転送する
  3. 携帯でメンバー登録URLにアクセス
  4. そのまま携帯からメンバー登録フォームを送信
  5. エラーになり登録できない(画面にはエラーとは表示されない)

提案

コアの仕様、ポリシー(セキュリティ)に関連するため、根本的な対処はこのチケットの範囲外になってしまうと思いますが、いくつか考慮が必要な点を書いておきます。

  • そもそも説明に書いたような手順を許可するのかどうか
    • 次の項目とも関連
  • 説明に書いたような手順で携帯から登録ができても、設定によっては携帯からはログインできない、という挙動にするのか

なお、暫定的な対処方法は、$memberConfig->setName の前に$memberConfigのnullチェックを行い、nullであればエラーとするよう修正することです。
(この時点ではなく、登録フローのもう少し前でエラーになった方が親切でしょうけれど、それには上に書いたような仕様の検討が必要でしょうし)


関連するチケット

関連している opAuthMailAddressPlugin - Backport(バックポート) #2410: opAuthRegisterFormMailAddress::doSave()の$memberConfig->setName()の処理で、レコードの存在チェックがない Fixed(完了) 2010-10-09

履歴

#1 Mutsumi Imamura12年以上前に更新

  • トラッカーEnhancement(機能追加・改善) から Bug(バグ) に変更
  • 優先度Normal(通常) から High(高め) に変更
  • 3.6 で発生するかYes にセット
  • [QA]バグ通知済いいえ にセット

#2 Shingo Yamada12年以上前に更新

  • 担当者Maki Takahashi にセット

#3 Shingo Yamada12年以上前に更新

  • 360対象RC1 にセット

#4 Maki Takahashi12年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

#5 Maki Takahashi12年以上前に更新

修正方針の検討

  • そもそも説明に書いたような手順を許可するのかどうか
    • 次の項目とも関連
  • 説明に書いたような手順で携帯から登録ができても、設定によっては携帯からはログインできない、という挙動にするのか
  • 2系では上記手順が許可されていなかった
  • 設定(PC版/携帯版がともに有効かつログイン時にPCメールアドレス&携帯メールアドレスの両方を受け付けるときのみ)によって許可するという案もあるが、設定は管理者によっていつでも変更可能なため、利用者に混乱を与えかねない
  • (PCメールアドレスから携帯メールアドレスに転送した場合)、携帯版が無効になっていればそもそも登録ができない(逆もあり)。

以上から、PCメールアドレスヘの招待はPC版からのみ登録可能(携帯メールアドレスへの招待は携帯版からのみ登録可能)とし、

  • 招待メールにその旨を記載する
  • 上記手順の3.の時点でエラー表示を行う

ように修正します

#6 Maki Takahashi12年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

https://github.com/martini2002jp/opAuthMailAddressPlugin/commit/831fe849239ed00fa09ff0f5349a759de8090b70 にて
メールに記載されたURLにアクセスした時点で、
アプリケーションとmember_configに登録されているメールアドレスの種類(PC/モバイル)が異なる場合はエラー画面を表示するようにしました。
招待メールはコアで文面を設定しているため(管理画面から編集)、「PCメールアドレスヘの招待はPC版からのみ登録可能」等の注意書きは
招待なしでの新規登録時に送信されるメールにのみ記載されます。

  • 招待なしでの新規登録時(PC版)
    • メール文面に注意書きがある
    • PCアドレスへメール送信した場合はモバイル(モバイルアドレスへメール送信した場合はPC)でメールに記載のURLにアクセスするとエラー表示がなされる
  • 招待なしでの新規登録時(モバイル版 空メール)
    • メール文面に注意書きがある
    • PCアドレスへメール送信した場合はモバイル(モバイルアドレスへメール送信した場合はPC)でメールに記載のURLにアクセスするとエラー表示がなされる
  • ユーザーの招待からの登録
    • PCアドレスへメール送信した場合はモバイル(モバイルアドレスへメール送信した場合はPC)でメールに記載のURLにアクセスするとエラー表示がなされる
  • 管理者の招待からの登録
    • PCアドレスへメール送信した場合はモバイル(モバイルアドレスへメール送信した場合はPC)でメールに記載のURLにアクセスするとエラー表示がなされる

以上を確認しています。

https://github.com/martini2002jp/opAuthMailAddressPlugin/commit/0d8a52a072907ab1c93fddaff0da40557061ab20 にて
メールのURLから登録情報入力画面に遷移し、フォーム送信した場合に
メールアドレスとアプリケーションが異なる場合にフォームにエラー表示がなされるように修正しました。

PCアドレス宛に招待メールを送信し
PCからメールに記載されたURLにアクセス後、フォームが表示された時点でのURLをコピー
モバイルにてコピーしたURLにアクセスしフォームを送信した場合にエラー表示されることを確認しています。

#7 Kousuke Ebihara12年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 対象バージョン1.3.4 にセット
  • 進捗率50 から 70 に変更

master に取り込みました。 1.2.x にも修正を反映する必要があります。

#8 Yuma Sakata12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

他の形式にエクスポート: Atom PDF