Make sure email replies to diary comments come from the right user
This commit is contained in:
parent
fe0f4543c1
commit
de6c33814b
2 changed files with 18 additions and 12 deletions
|
@ -107,7 +107,7 @@ class Notifier < ActionMailer::Base
|
||||||
:display_name => comment.user.display_name,
|
:display_name => comment.user.display_name,
|
||||||
:title => "Re: #{comment.diary_entry.title}")
|
: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,
|
:to => recipient.email,
|
||||||
:subject => I18n.t("notifier.diary_comment_notification.subject", :user => comment.user.display_name)
|
:subject => I18n.t("notifier.diary_comment_notification.subject", :user => comment.user.display_name)
|
||||||
end
|
end
|
||||||
|
@ -180,9 +180,13 @@ class Notifier < ActionMailer::Base
|
||||||
end
|
end
|
||||||
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
|
if Object.const_defined?(:MESSAGES_DOMAIN) && domain = MESSAGES_DOMAIN
|
||||||
|
if user_id
|
||||||
|
"#{name} <#{type}-#{id}-#{user_id}-#{digest[0, 6]}@#{domain}>"
|
||||||
|
else
|
||||||
"#{name} <#{type}-#{id}-#{digest[0, 6]}@#{domain}>"
|
"#{name} <#{type}-#{id}-#{digest[0, 6]}@#{domain}>"
|
||||||
|
end
|
||||||
else
|
else
|
||||||
EMAIL_FROM
|
EMAIL_FROM
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,23 +2,25 @@
|
||||||
|
|
||||||
require File.dirname(__FILE__) + "/../config/environment"
|
require File.dirname(__FILE__) + "/../config/environment"
|
||||||
|
|
||||||
exit 0 unless recipient = ARGV[0].match(/^([cm])-(\d+)-(.*)$/)
|
if recipient = ARGV[0].match(/^c-(\d+)-(\d+)-(.*)$/)
|
||||||
|
comment = DiaryComment.find(recipient[1])
|
||||||
if recipient[1] == "c"
|
|
||||||
comment = DiaryComment.find(recipient[2])
|
|
||||||
digest = comment.digest
|
digest = comment.digest
|
||||||
date = diary_comment.created_at
|
date = comment.created_at
|
||||||
from = comment.diary_entry.user
|
from = User.find(recipient[2])
|
||||||
to = comment.user
|
to = comment.user
|
||||||
else
|
token = recipient[3]
|
||||||
message = Message.find(recipient[2])
|
elsif recipient = ARGV[0].match(/^m-(\d+)-(.*)$/)
|
||||||
|
message = Message.find(recipient[1])
|
||||||
digest = message.digest
|
digest = message.digest
|
||||||
date = message.sent_on
|
date = message.sent_on
|
||||||
from = message.recipient
|
from = message.recipient
|
||||||
to = message.sender
|
to = message.sender
|
||||||
|
token = recipient[2]
|
||||||
|
else
|
||||||
|
exit 0
|
||||||
end
|
end
|
||||||
|
|
||||||
exit 0 unless recipient[3] == digest[0, 6]
|
exit 0 unless token == digest[0, 6]
|
||||||
exit 0 if date < 1.month.ago
|
exit 0 if date < 1.month.ago
|
||||||
|
|
||||||
message.update_attribute(:message_read, true) if message
|
message.update_attribute(:message_read, true) if message
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue