前田です。
2019年2月12日(火) 12:54 SEKI <
sekiguch...@gmail.com>:
> セキュリティ通知を無効化する理由は
> Redmine社内のお問い合わせ管理のベースと使用しておりユーザーが数千人登録してあります。
>
> ユーザー更新時にAPIで全件更新かけておりました。(比較するより全件更新の方が早かったとメモにはあります。)
> 今回のバージョンアップ後にユーザー取込ジョブを流したところ、一部のユーザー(メールアドレスが更新された?更新処理が走った?)
> にメールが飛んでしまうという事象が発生したので、更新時に飛ばなくしたいという背景があります。
利用者の方にとっては何もしていないのにいきなり何か問題が発生したかのようなメールが届いてしまい、不安を招いたり管理者の方への問い合わせが発生したちということですね。ご事情よくわかりました。ありがとうございました。
> ①今回ご教示頂いた4か所を修正すると、メールが飛ばなくなるのはセキュリティ通知関連のみで
> 例えばチケットの変更通知メールなどは飛ぶという認識で問題ありませんでしょうか。
はい、そのつもりです。ただ、きちんとテストしていませんので、本格展開前に確認をお願いいたします。
> ②上記のように考えた理由は
> def deliver_security_notification
> def self.password_updated
> def self.security_settings_updated
> def deliver_security_notification
>
> 上記4つのメソッドでセキュリティ通知を送る処理を送る処理が書いている。
> しかしそれより前に「Return True」を記載することによって
> メソッドは呼び出しされるが、何もせずにリターンするように改修してくださっている。
> という認識でよろしいでしょうか?
その通りです。
> ③もし②の認識が合っているようであれば、
> 自分が行おうとしていたコントローラーからメールを飛ばしていそうな処理を削るより
> モデルに対応を行う方が良い理由についてご教示頂きたいです。
>
> 自分の認識としては、Router→Controller→Model→データベースと行く認識なので
> 呼び出す元を無効にするより、呼び出された元を無効化した方が漏れが生まれる可能性が
> 減るからなのでしょうか?
ご推察の通り、実際のメール送信処理に近い箇所を修正することで、(1) 変更箇所をなるべく少なくする (2) 変更漏れが発生する可能性を抑える
— ということを意図しています。
--
// 前田 剛