Commit c26b001e authored by Douwe Maan's avatar Douwe Maan

Set EmailsOnPush reply-to address to committer email when enabled.

parent ae6d0aaa
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
v 7.10.0 (unreleased) v 7.10.0 (unreleased)
- Set EmailsOnPush reply-to address to committer email when enabled.
- Fix broken file browsing with a submodule that contains a relative link (Stan Hu) - Fix broken file browsing with a submodule that contains a relative link (Stan Hu)
- Fix persistent XSS vulnerability around profile website URLs. - Fix persistent XSS vulnerability around profile website URLs.
- Fix project import URL regex to prevent arbitary local repos from being imported. - Fix project import URL regex to prevent arbitary local repos from being imported.
......
...@@ -84,7 +84,15 @@ module Emails ...@@ -84,7 +84,15 @@ module Emails
@disable_footer = true @disable_footer = true
reply_to =
if send_from_committer_email && can_send_from_user_email?(@author)
@author.email
else
Gitlab.config.gitlab.email_reply_to
end
mail(from: sender(author_id, send_from_committer_email), mail(from: sender(author_id, send_from_committer_email),
reply_to: reply_to,
to: recipient, to: recipient,
subject: @subject) subject: @subject)
end end
......
...@@ -60,21 +60,25 @@ class Notify < ActionMailer::Base ...@@ -60,21 +60,25 @@ class Notify < ActionMailer::Base
address address
end end
def can_send_from_user_email?(sender)
sender_domain = sender.email.split("@").last
self.class.allowed_email_domains.include?(sender_domain)
end
# Return an email address that displays the name of the sender. # Return an email address that displays the name of the sender.
# Only the displayed name changes; the actual email address is always the same. # Only the displayed name changes; the actual email address is always the same.
def sender(sender_id, send_from_user_email = false) def sender(sender_id, send_from_user_email = false)
if sender = User.find(sender_id) return unless sender = User.find(sender_id)
address = default_sender_address address = default_sender_address
address.display_name = sender.name address.display_name = sender.name
sender_domain = sender.email.split("@").last if send_from_user_email && can_send_from_user_email?(sender)
if send_from_user_email && self.class.allowed_email_domains.include?(sender_domain)
address.address = sender.email address.address = sender.email
end end
address.format address.format
end end
end
# Look up a User by their ID and return their email address # Look up a User by their ID and return their email address
# #
......
...@@ -725,6 +725,11 @@ describe Notify do ...@@ -725,6 +725,11 @@ describe Notify do
sender = subject.header[:from].addrs[0] sender = subject.header[:from].addrs[0]
expect(sender.address).to eq(user.email) expect(sender.address).to eq(user.email)
end end
it "is set to reply to the committer email" do
sender = subject.header[:reply_to].addrs[0]
expect(sender.address).to eq(user.email)
end
end end
context "when the committer email domain is not completely within the GitLab domain" do context "when the committer email domain is not completely within the GitLab domain" do
...@@ -738,6 +743,11 @@ describe Notify do ...@@ -738,6 +743,11 @@ describe Notify do
sender = subject.header[:from].addrs[0] sender = subject.header[:from].addrs[0]
expect(sender.address).to eq(gitlab_sender) expect(sender.address).to eq(gitlab_sender)
end end
it "is set to reply to the default email" do
sender = subject.header[:reply_to].addrs[0]
expect(sender.address).to eq(gitlab_sender_reply_to)
end
end end
context "when the committer email domain is outside the GitLab domain" do context "when the committer email domain is outside the GitLab domain" do
...@@ -751,6 +761,11 @@ describe Notify do ...@@ -751,6 +761,11 @@ describe Notify do
sender = subject.header[:from].addrs[0] sender = subject.header[:from].addrs[0]
expect(sender.address).to eq(gitlab_sender) expect(sender.address).to eq(gitlab_sender)
end end
it "is set to reply to the default email" do
sender = subject.header[:reply_to].addrs[0]
expect(sender.address).to eq(gitlab_sender_reply_to)
end
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment