From de6c33814b92e93dcd4dc40b33da1effe8ad982b Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 29 Nov 2016 19:30:23 +0000 Subject: [PATCH] Make sure email replies to diary comments come from the right user --- app/models/notifier.rb | 10 +++++++--- script/deliver-message | 20 +++++++++++--------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app/models/notifier.rb b/app/models/notifier.rb index a498e4edf..0539bdeb7 100644 --- a/app/models/notifier.rb +++ b/app/models/notifier.rb @@ -107,7 +107,7 @@ class Notifier < ActionMailer::Base :display_name => comment.user.display_name, :title => "Re: #{comment.diary_entry.title}") - mail :from => from_address(comment.user.display_name, "c", comment.id, comment.digest), + mail :from => from_address(comment.user.display_name, "c", comment.id, comment.digest, recipient.id), :to => recipient.email, :subject => I18n.t("notifier.diary_comment_notification.subject", :user => comment.user.display_name) end @@ -180,9 +180,13 @@ class Notifier < ActionMailer::Base end end - def from_address(name, type, id, digest) + def from_address(name, type, id, digest, user_id = nil) if Object.const_defined?(:MESSAGES_DOMAIN) && domain = MESSAGES_DOMAIN - "#{name} <#{type}-#{id}-#{digest[0, 6]}@#{domain}>" + if user_id + "#{name} <#{type}-#{id}-#{user_id}-#{digest[0, 6]}@#{domain}>" + else + "#{name} <#{type}-#{id}-#{digest[0, 6]}@#{domain}>" + end else EMAIL_FROM end diff --git a/script/deliver-message b/script/deliver-message index 04dcb881b..c15d36596 100755 --- a/script/deliver-message +++ b/script/deliver-message @@ -2,23 +2,25 @@ require File.dirname(__FILE__) + "/../config/environment" -exit 0 unless recipient = ARGV[0].match(/^([cm])-(\d+)-(.*)$/) - -if recipient[1] == "c" - comment = DiaryComment.find(recipient[2]) +if recipient = ARGV[0].match(/^c-(\d+)-(\d+)-(.*)$/) + comment = DiaryComment.find(recipient[1]) digest = comment.digest - date = diary_comment.created_at - from = comment.diary_entry.user + date = comment.created_at + from = User.find(recipient[2]) to = comment.user -else - message = Message.find(recipient[2]) + token = recipient[3] +elsif recipient = ARGV[0].match(/^m-(\d+)-(.*)$/) + message = Message.find(recipient[1]) digest = message.digest date = message.sent_on from = message.recipient to = message.sender + token = recipient[2] +else + exit 0 end -exit 0 unless recipient[3] == digest[0, 6] +exit 0 unless token == digest[0, 6] exit 0 if date < 1.month.ago message.update_attribute(:message_read, true) if message -- 2.39.5