プロジェクト

全般

プロフィール

Bug(バグ) #3453

管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう

Youichi Kimura10年以上前に追加. 約7年前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2013-10-17
期日:
進捗率:

0%

3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)

説明

Overview (現象)

管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定している状態であっても、新規登録時のプロフィール入力画面では年齢の公開範囲に「Web全体に公開」の選択肢が表示され選択できてしまう。

Causes (原因)

管理画面の「Web 全体への年齢公開許可設定」で設定された値は、MemberConfigPublicFlagForm::__construct() で使用されている。
ここでは「Web 全体への年齢公開許可設定」が「メンバーの設定を許可しない」にセットされていた場合、「年齢の公開範囲」の選択肢から「Web 全体に公開」を除去している。

source:lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php@20d13f4#L31:

    if (!opConfig::get('is_allow_web_public_flag_age'))
    {
      $widget = $this->widgetSchema['age_public_flag'];

      $choices = $widget->getOption('choices');
      unset($choices[4]);
      $widget->setOption('choices', $choices);

      $this->validatorSchema['age_public_flag']->setOption('choices', array_keys($choices));
    }

しかし、 新規登録時 のフォームでは MemberConfigPublicFlagForm などの MemberConfigForm 派生クラスは使用されず MemberConfigForm のインスタンスが直接使用されるため、MemberConfigPublicFlagForm::__construct() が呼ばれることはない。
そのため、「Web 全体への年齢公開許可設定」の設定値を考慮することなく MemberConfigForm::generateConfigWidgets() によってウィジェットが追加される。

Way to fix (修正内容)

「Web 全体に公開」の選択肢の除去を MemberConfigForm::setMemberConfigSettings() メソッドに移動する。
このメソッドは、新規登録画面 (MemberConfigForm インスタンスが使われる) および設定変更画面 (MemberConfigForm 派生クラスのインスタンスが使われる) で共通して使用されるため、これらの画面による選択肢の差異が生じなくなる。


関連するチケット

関連している OpenPNE 3 - Backport(バックポート) #3493: 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう Fixed(完了) 2013-10-17
関連している OpenPNE 3 - Backport(バックポート) #3494: 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう Fixed(完了) 2013-10-17
関連している OpenPNE 3 - Bug(バグ) #3130: 管理画面「Web 全体への年齢公開許可設定」および「メンバーのプロフィールページ公開範囲設定」のデフォルト値を変更しても設定に反映されない Won't fix(対応せず) 2012-07-24

履歴

#1 Mutsumi Imamura10年以上前に更新

  • 3.6 で発生するかUnknown (未調査) から Yes (はい) に変更
  • 3.8 で発生するかUnknown (未調査) から Yes (はい) に変更

#2 Akihiro KOBAYASHI9年以上前に更新

  • 担当者Akihiro KOBAYASHI にセット

#3 Akihiro KOBAYASHI9年以上前に更新

  • 関連している Bug(バグ) #3130: 管理画面「Web 全体への年齢公開許可設定」および「メンバーのプロフィールページ公開範囲設定」のデフォルト値を変更しても設定に反映されない を追加

#4 Akihiro KOBAYASHI9年以上前に更新

新規登録時だけでなく、登録完了後の「公開範囲設定」においても設定が反映されていない(管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても、新規登録後「公開範囲設定」で年齢公開許可設定をユーザーが行う事ができる)ことが判明しました

そちらに関してはlib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php内

if (!opConfig::get('is_allow_web_public_flag_age'))
{
  $widget = $this->widgetSchema['age_public_flag'];
  $choices = $widget->getOption('choices');
  unset($choices[4]);
  $widget->setOption('choices', $choices);
  $this->validatorSchema['age_public_flag']->setOption('choices', array_keys($choices));
}

を変更し、unsetを付け加える事で対処します

#5 Akihiro KOBAYASHI9年以上前に更新

  • 題名管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう から 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時及び新規登録後で選択できてしまう に変更

#6 Akihiro KOBAYASHI9年以上前に更新

新規登録時には管理者設定により、is_allow_web_public_flag_ageの値が0になったと同時に、lib/config/config/member_config.yml内のage_public_flag:IsRegistの値をfalseに変えることで対応します

#7 Akihiro KOBAYASHI9年以上前に更新

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

#8 Akihiro KOBAYASHI9年以上前に更新

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

プルリクエスト: https://github.com/openpne/OpenPNE3/pull/230

lib/form/MemberConfigForm/MemberConfigPublicFlagForm.class.php内
unset(...)によってmember/configで設定変更可能な部分を防ぐ

lib/form/doctrine/MemberConfigForm.class.php内

if($value['Name'] == "age_public_flag" && !opConfig::get('is_allow_web_public_flag_age')){
$value['IsRegist'] = false;
}

の追加によって新規登録時に表示されないようにする

#9 kaoru nほぼ9年前に更新

  • 担当者 を削除 (Akihiro KOBAYASHI)

#10 Shinichi Urabe7年以上前に更新

  • 担当者Youichi Kimura にセット

担当者はいっていないのでいれておきます

#11 Shinichi Urabe7年以上前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」の設定としては、管理画面にも説明があるように
「メンバーが年齢を Web 全体に公開できるようにするかどうかを設定します」という意味で有り、公開範囲自体選択させない今回の修正内容は本チケットの本文にある指摘や、管理画面の説明に沿っていないです。

新規登録画面において、年齢の公開範囲に「Web全体に公開」の選択肢が表示され選択できてしまう という問題についての対応をお願いします

#12 Shinichi Urabe7年以上前に更新

尚、修正しましたら、本文に「修正内容」「原因」の記載をお願いします

#14 Youichi Kimura約7年前に更新

  • 題名管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時及び新規登録後で選択できてしまう から 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう に変更
  • 説明 を更新 (diff)

#3453-11 での指摘の通り、この問題は新規登録時のフォームでのみ生じるものであるため、それに合わせてタイトルおよび原因について記載します。

#15 Youichi Kimura約7年前に更新

  • 説明 を更新 (diff)
  • ステータスRejected(差し戻し) から Pending Review(レビュー待ち) に変更

下記 Pull Request にて修正しました
https://github.com/openpne/OpenPNE3/pull/447

#16 Shinichi Urabe約7年前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#17 kaoru n約7年前に更新

  • ステータスPending Testing(テスト待ち) から Won't fix(対応せず) に変更
  • 対象バージョンOpenPNE 3.9.0-old から OpenPNE 3.9.0 に変更
  • 進捗率70 から 0 に変更

OpenPNE 3.8.23 にて対応済みであったため、対応せずとします。

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