fjordllc / bootcamp

プログラマー向けEラーニングシステム
https://bootcamp.fjord.jp
MIT License
286 stars 71 forks source link

他のユーザーのメール通知設定を変更できないようにした #8149

Closed Ryooo-k closed 1 week ago

Ryooo-k commented 1 month ago

Issue

概要

自分以外のユーザーのメール通知をOFFに設定できないようにしました。

変更前

変更後

変更確認方法

  1. bug/prevent-disabling-other-users-notifications をローカルに取り込む i. git fetch origin pull/8149/head:bug/prevent-disabling-other-users-notifications ii. git checkout bug/prevent-disabling-other-users-notifications
  2. foreman start -f Procfile.dev でローカルサーバーを立ち上げる
  3. 通知設定変更画面にアクセスする(kimuraさんの通知設定変更の画面)
  4. デベロッパーツールを開く(Mac:opt + cmd + i 、Windows:Ctrl + Shift + i )
  5. セレクトモードに切り替える。(下図の赤丸部分を選択する)

スクリーンショット 2024-10-24 9 17 42

  1. 「オフにする」のボタンを押す

スクリーンショット 2024-10-24 9 45 39

  1. デベロッパーツール上のHTMLで、下図赤枠部が選択されるため、下記手順でtokenを変更する i. "/users/991528156/mail_notification?token=k6Da-oL3cRi8ApNFO9-Gcg"にカーソルを当て、右クリック ii. Edit attributeを選択 iii. "/users/991528156/mail_notification?token=k6Da-oL3cRi8ApNFO9-Gcg""/users/991528156/mail_notification?token=037i-ef5n7V4EnPv74mtyQ"に変更する (k6Da-oL3cRi8ApNFO9-Gcgはkimuraさんのtoken、037i-ef5n7V4EnPv74mtyQはkomagataさんのtoken)

スクリーンショット 2024-11-07 15 26 10

8.「オフにする」のボタンを押す

スクリーンショット 2024-11-07 15 26 10 2

  1. 「ユーザーIDもしくはTOKENが違います。」のメッセージが表示されることを確認する。

スクリーンショット 2024-11-07 15 29 13

スクリーンショット 2024-11-07 15 32 07

  1. ユーザー名 kimura 、パスワード testtestログインする
  2. kimuraさんの登録情報変更ページにアクセスし、メール通知がONになっていることを確認する
スクリーンショット 2024-10-24 10 27 19
  1. ログアウトする
  2. ユーザー名 komagata 、パスワード testtestログインする
  3. komagataさんの登録情報変更ページにアクセスし、メール通知がONになっていることを確認する

Screenshot

変更前

全てのユーザーIDを受け入れ、他のユーザーのメール通知をOFFにできる。

スクリーンショット 2024-10-24 10 55 01

変更後

スクリーンショット 2024-10-24 10 55 01

スクリーンショット 2024-11-07 15 29 13

Ryooo-k commented 1 month ago

@Shrimprin お疲れ様です! こちらのレビューをお願いしたいのですが可能でしょうか? ご確認お願いいたします🙏

Shrimprin commented 1 month ago

@Ryooo-k お疲れ様です!レビュー承知いたしました 👍 今週の土日あたりで対応させていただきます〜

Shrimprin commented 1 month ago

@Ryooo-k お疲れ様です!

動作については問題ないこと確認できました! 👍

1点、仕様について質問です。 メール通知をOFFにする画面はメール通知をOFFにする対象のユーザー以外からはアクセスされる必要がないという認識です。 なので、画面へのアクセスにログイン必須かつログインユーザーがメール通知をOFFにする対象のユーザーと一致の条件を加えても良いと思ったのですがいかがでしょうか?

Ryooo-k commented 1 month ago

@Shrimprin ご確認ありがとうございます!

画面へのアクセスにログイン必須かつログインユーザーがメール通知をOFFにする対象のユーザーと一致の条件を加えても良いと思ったのですがいかがでしょうか?

確かにメール通知OFF画面に対して直接アクセス制限をかけた方が良いかもしれないですね! (アクセス制限かけたら現状の条件分岐は一つ減らせそうですし) ログインユーザーがメール通知をOFFにする対象のユーザーと一致の条件は、結局メール通知OFF画面でHTMLを改変すれば今回のバグと同じ現象になってしまうと思うので、まずはアクセス制限をかけるように変更してみますね👍

Ryooo-k commented 1 month ago

@Shrimprin お疲れ様です! メール通知OFF画面へのアクセスにはログインを必要要件としました。再度、レビューお願いいたします🙏

Ryooo-k commented 4 weeks ago

@Shrimprin 修正しましたのでご確認お願いします!

Ryooo-k commented 4 weeks ago

@Shrimprin ご確認ありがとうございます! レイアウトの部分は、一度machidaさんに相談してみます!

Ryooo-k commented 3 weeks ago

@machida 先日はお時間いただきありがとうございました! 内容の議事録と方針をまとめておきます。

相談内容

本issueのバグを修正するにあたり、メール通知画面へのアクセスにはログインを必須にしようとしている。layoutには layout 'not_logged_in' を採用しており、ログイン必須の条件とlayout 'not_logged_in'が相違している状態となった。

解決策1

layoutを変更する。この場合はmachidaさんにデザイン変更依頼をする必要がある。

解決策2

ログインを必須とする場合、ユーザビリティが悪くなる。ログインは必須とせず、解読や予測が難しいURIとした方が良い。フィヨルドトーーク!GitHub)を参考にすると良い。

方針

ログインは不要で進めます。 フィヨルドトーーク!ではiduuidで生成されるため、解読や予測が難しいURIとなっていました。 本アプリのidserialで生成されるため、クエリパラメータにSecureRandom.urlsafe_base64メソッドで生成されるUserモデルのカラムのunsubscribe_email_tokenを追加し、そのtokenを用いて判定しようと思います。

Ryooo-k commented 3 weeks ago

@Shrimprin 修正しましたのでご確認お願いいたします! 修正のポイントをまとます。

Shrimprin commented 2 weeks ago

@Ryooo-k 承知しました!いろいろと仕様をご検討いただきありがとうございます 🙏 土日の間に確認させていただきます~ 👍

Shrimprin commented 2 weeks ago

@Ryooo-k 確認しました!OKだと思います 👍

他のユーザーは知り得ないtokenを使い、メールを受け取った本人しか変更できなくしたのですね! こういう方法もあるのだな〜勉強になりました 👏

Ryooo-k commented 2 weeks ago

@Shrimprin ご確認ありがとうございます! 自分も勉強になりました!色々ご指摘ありがとうございました✨

@komagata メンバーレビューが完了しましたので、メンターレビューをお願いいたします🙇