summaryrefslogtreecommitdiff
path: root/app/services/notification_service.rb
diff options
context:
space:
mode:
author🙈 jacopo beschi 🙉 <intrip@gmail.com>2018-02-19 17:47:08 +0000
committerRémy Coutable <remy@rymai.me>2018-02-19 17:47:08 +0000
commit80090c8b06859ac23fec4b69c88a0e854ca2db8e (patch)
treed2384ac96dce71a9afc989c8e898a6b713a34f11 /app/services/notification_service.rb
parent9f06e3139803f0f20a0150bfe3ab13a06f2e3148 (diff)
downloadgitlab-ce-80090c8b06859ac23fec4b69c88a0e854ca2db8e.tar.gz
Resolve "group request membership mail with too long list of "To:""
Diffstat (limited to 'app/services/notification_service.rb')
-rw-r--r--app/services/notification_service.rb17
1 files changed, 16 insertions, 1 deletions
diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb
index 8c84ccfcc92..56e941d90ff 100644
--- a/app/services/notification_service.rb
+++ b/app/services/notification_service.rb
@@ -208,7 +208,12 @@ class NotificationService
def new_access_request(member)
return true unless member.notifiable?(:subscription)
- mailer.member_access_requested_email(member.real_source_type, member.id).deliver_later
+ recipients = member.source.members.owners_and_masters
+ if fallback_to_group_owners_masters?(recipients, member)
+ recipients = member.source.group.members.owners_and_masters
+ end
+
+ recipients.each { |recipient| deliver_access_request_email(recipient, member) }
end
def decline_access_request(member)
@@ -435,4 +440,14 @@ class NotificationService
def notifiable_users(*args)
NotificationRecipientService.notifiable_users(*args)
end
+
+ def deliver_access_request_email(recipient, member)
+ mailer.member_access_requested_email(member.real_source_type, member.id, recipient.user.notification_email).deliver_later
+ end
+
+ def fallback_to_group_owners_masters?(recipients, member)
+ return false if recipients.present?
+
+ member.source.respond_to?(:group) && member.source.group
+ end
end