Enhancement(機能追加・改善) #3829
完了member_configのpc_address_preを複数の目的で使用すべきではない
0%
説明
Overview (概要)¶
現状、member_config の pc_address_pre は下記の 2 つの目的で使用されている。
- メンバーの新規登録または招待時に入力されたメールアドレスの保持
- メンバー登録が完了するまで有効
- 登録が完了すると、name が pc_address_pre から pc_address に変更される。
- 参照:
opAuthRegisterFormMailAddress::doSave()
- メンバーのメールアドレス変更時に、確認手続きが完了するまでの変更後のメールアドレスの保持
- 変更後のメールアドレスの確認手続きが完了するまで有効
- 確認手続きが完了すると、name が pc_address_pre から pc_address に変更される。
- 参照:
opMemberAction::executeConfigComplete()
このように pc_address_pre が複数の意味を持っている現状では、新規登録の実装に手を加える際にはメールアドレス変更の影響を受けないか、実装やレビュー時に余分に考慮しなければならない。(メールアドレス変更の実装に変更を加える場合も同様)
新規登録はユーザーの権限に影響を及ぼすため変更に慎重を要することや、新規登録のフローは #3416 のコメントに記載されているように複雑な手順を踏むことから、考慮しなければならない事項をなるべく減らすためにも pc_address_pre を複数の目的で使用することは避けるべきである。
Spec (仕様)¶
新規登録かメールアドレス変更のいずれかで pc_address_pre 以外の別の名前を使用するように変更する。
ただし、いずれの場合も既存の pc_address_pre を仕様変更後にどのように扱うか考慮する必要がある。(マイグレーション時に pc_address_pre の用途を判別して適切な名前に変更するなど)
Youichi Kimura さんが約8年前に更新
- ステータス を New(新規) から Invalid(無効) に変更
当チケットについて pc_address_pre の名前を変更して解決する問題ではないと判断したためクローズします。
当初このチケットは、過去に修正された #3066 の根本的な解決のためには pc_address_pre が「新規登録」と「メールアドレス変更」という異なる機能で混同されている状態を解消する必要があると考えたため作成したものでした。
しかし改めて問題を確認したところ、これらの機能はユーザーが入力した「所有者確認が済んでおらず pc_address にセットできないメールアドレス」を保持するための手段として pc_address_pre を使用しており、pc_address_pre の用途が混同している状態であるとは言い難いものでした。ここでいうメールアドレスの所有者確認とは、ユーザーが入力したメールアドレスに確認用URL (新規登録であれば member/register、メールアドレス変更であれば member/configComplete) が記載されたメールを送り、そのメールを受信したユーザーが確認用URLにアクセスすることによってメールアドレスの所有者を確認するプロセスを指します。
ここで改めて pc_address_pre の用途を「所有者確認が完了していないメールアドレス」であると定義すると、 #3066 の問題は「新規登録以外にも pc_address_pre を使用する機能があった」ことが原因ではなく「pc_address_pre の存在だけで新規登録途中のメンバーであると判断した」ことが原因であり、pc_address_pre に対応する member の is_active が 0 であることの確認を怠らなければ解決できた問題であるといえます。
以上の理由で、当チケットに記載している pc_address_pre の名前を変える修正は不要であると判断しました。