Bug(バグ) #3453
完了管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう
0%
説明
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 派生クラスのインスタンスが使われる) で共通して使用されるため、これらの画面による選択肢の差異が生じなくなる。
Mutsumi Imamura さんがほぼ11年前に更新
- 3.6 で発生するか を Unknown (未調査) から Yes (はい) に変更
- 3.8 で発生するか を Unknown (未調査) から Yes (はい) に変更
Akihiro KOBAYASHI さんが約10年前に更新
- 関連している Bug(バグ) #3130: 管理画面「Web 全体への年齢公開許可設定」および「メンバーのプロフィールページ公開範囲設定」のデフォルト値を変更しても設定に反映されない を追加
Akihiro KOBAYASHI さんが約10年前に更新
新規登録時だけでなく、登録完了後の「公開範囲設定」においても設定が反映されていない(管理画面で「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を付け加える事で対処します
Akihiro KOBAYASHI さんが約10年前に更新
- 題名 を 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時には選択できてしまう から 管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」に設定しても新規登録時及び新規登録後で選択できてしまう に変更
Akihiro KOBAYASHI さんが約10年前に更新
新規登録時には管理者設定により、is_allow_web_public_flag_ageの値が0になったと同時に、lib/config/config/member_config.yml内のage_public_flag:IsRegistの値をfalseに変えることで対応します
Akihiro KOBAYASHI さんが約10年前に更新
- ステータス を 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;
}
の追加によって新規登録時に表示されないようにする
Shinichi Urabe さんが約8年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
管理画面で「Web 全体への年齢公開許可設定」を「メンバーの設定を許可しない」の設定としては、管理画面にも説明があるように
「メンバーが年齢を Web 全体に公開できるようにするかどうかを設定します」という意味で有り、公開範囲自体選択させない今回の修正内容は本チケットの本文にある指摘や、管理画面の説明に沿っていないです。
新規登録画面において、年齢の公開範囲に「Web全体に公開」の選択肢が表示され選択できてしまう という問題についての対応をお願いします
Youichi Kimura さんが7年以上前に更新
- 説明 を更新 (差分)
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
下記 Pull Request にて修正しました
https://github.com/openpne/OpenPNE3/pull/447
Shinichi Urabe さんが7年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更