FIX: don't invite users with the same email as 'reply_be_email_address'

This commit is contained in:
Régis Hanol 2016-01-19 15:24:34 +01:00
parent d18085c57d
commit 735017dd9f
3 changed files with 14 additions and 8 deletions

View File

@ -317,11 +317,12 @@ module Email
def add_other_addresses(topic, sender)
%i(to cc bcc).each do |d|
if @mail[d] && @mail[d].address_list && @mail[d].address_list.addresses
@mail[d].address_list.addresses.each do |address|
@mail[d].address_list.addresses.each do |address_field|
begin
if user = find_or_create_user(address)
unless topic.topic_allowed_users.where(user_id: user.id).exists? &&
topic.topic_allowed_groups.where("group_id IN (SELECT group_id FROM group_users WHERE user_id = ?)", user.id).exists?
email = address_field.address.downcase
if email !~ reply_by_email_address_regex
user = find_or_create_user(address_field)
if can_invite?(topic, user)
topic.topic_allowed_users.create!(user_id: user.id)
topic.add_small_action(sender, "invited_user", user.username)
end
@ -334,6 +335,11 @@ module Email
end
end
def can_invite?(topic, user)
!topic.topic_allowed_users.where(user_id: user.id).exists? &&
!topic.topic_allowed_groups.where("group_id IN (SELECT group_id FROM group_users WHERE user_id = ?)", user.id).exists?
end
end
end

View File

@ -189,11 +189,11 @@ describe Email::Receiver do
expect(user.name).to eq("Случайная Имя")
end
it "invites everyone in the chain" do
it "invites everyone in the chain but users whose email matches the 'reply_by_email_address'" do
expect { process(:cc) }.to change(Topic, :count)
emails = Topic.last.allowed_users.pluck(:email)
expect(emails.size).to eq(5)
expect(emails).to include("someone@else.com", "discourse@bar.com", "team@bar.com", "wat@bar.com", "42@bar.com")
expect(emails.size).to eq(4)
expect(emails).to include("someone@else.com", "discourse@bar.com", "team@bar.com", "wat@bar.com")
end
end

View File

@ -1,7 +1,7 @@
Return-Path: <discourse@bar.com>
From: Foo Bar <discourse@bar.com>
To: someone@else.com
CC: team@bar.com, wat@bar.com, 42@bar.com
CC: team@bar.com, wat@bar.com, reply+d400310beeae61d785c2ac6a2aacb210@bar.com
Subject: The more, the merrier
Date: Fri, 15 Jan 2016 00:12:43 +0100
Message-ID: <30@foo.bar.mail>