Feature #13919 » 0003-Add-permission-check-before-sending-email.patch
| app/models/document.rb | ||
|---|---|---|
| 63 | 63 |
end |
| 64 | 64 | |
| 65 | 65 |
def notified_users |
| 66 |
project.notified_users.reject {|user| !visible?(user)}
|
|
| 66 |
project.notified_users.select {|user| user.allowed_to_view_notify_target?(self) }
|
|
| 67 | 67 |
end |
| 68 | 68 | |
| 69 | 69 |
private |
| app/models/issue.rb | ||
|---|---|---|
| 1070 | 1070 |
notified += project.users.preload(:preference).select(&:notify_about_high_priority_issues?) if priority.high? |
| 1071 | 1071 |
notified.uniq! |
| 1072 | 1072 |
# Remove users that can not view the issue |
| 1073 |
notified.reject! {|user| !visible?(user)}
|
|
| 1074 |
notified |
|
| 1073 |
notified.select {|user| user.allowed_to_view_notify_target?(self)}
|
|
| 1075 | 1074 |
end |
| 1076 | 1075 | |
| 1077 | 1076 |
# Returns the email addresses that should be notified |
| app/models/journal.rb | ||
|---|---|---|
| 146 | 146 | |
| 147 | 147 |
def notified_users |
| 148 | 148 |
notified = journalized.notified_users |
| 149 |
if private_notes? |
|
| 150 |
notified = notified.select {|user| user.allowed_to?(:view_private_notes, journalized.project)}
|
|
| 151 |
end |
|
| 152 |
notified |
|
| 149 |
notified.select{ |u| u.allowed_to_view_notify_target?(self) }
|
|
| 153 | 150 |
end |
| 154 | 151 | |
| 155 | 152 |
def recipients |
| app/models/message.rb | ||
|---|---|---|
| 114 | 114 |
end |
| 115 | 115 | |
| 116 | 116 |
def notified_users |
| 117 |
project.notified_users.reject {|user| !visible?(user)}
|
|
| 117 |
project.notified_users.select {|user| user.allowed_to_view_notify_target?(self) }
|
|
| 118 | 118 |
end |
| 119 | 119 | |
| 120 | 120 |
private |
| app/models/news.rb | ||
|---|---|---|
| 56 | 56 |
end |
| 57 | 57 | |
| 58 | 58 |
def notified_users |
| 59 |
project.users.select {|user| user.notify_about?(self) && user.allowed_to?(:view_news, project)}
|
|
| 59 |
project.users.select {|user| user.notify_about?(self) && user.allowed_to_view_notify_target?(self)}
|
|
| 60 | 60 |
end |
| 61 | 61 | |
| 62 | 62 |
def recipients |
| app/models/user.rb | ||
|---|---|---|
| 855 | 855 |
project_ids.map(&:to_i) |
| 856 | 856 |
end |
| 857 | 857 | |
| 858 |
# Return true if notify the mentioned user. |
|
| 859 |
def notify_mentioned_user?(object) |
|
| 860 |
self.active? && |
|
| 861 |
self.mail.present? && |
|
| 862 |
self.mail_notification.present? && self.mail_notification != 'none' && |
|
| 863 |
self.allowed_to_view_notify_target?(object) |
|
| 864 |
end |
|
| 865 | ||
| 866 |
# Return true if the user is allowed to view the notify target. |
|
| 867 |
def allowed_to_view_notify_target?(object) |
|
| 868 |
case object |
|
| 869 |
when Journal |
|
| 870 |
self.allowed_to_view_notify_target?(object.journalized) && |
|
| 871 |
(!object.private_notes? || self.allowed_to?(:view_private_notes, object.journalized.project)) |
|
| 872 |
when Comment |
|
| 873 |
self.allowed_to_view_notify_target?(object.commented) |
|
| 874 |
when nil |
|
| 875 |
false |
|
| 876 |
else |
|
| 877 |
object.visible?(self) |
|
| 878 |
end |
|
| 879 |
end |
|
| 880 | ||
| 858 | 881 |
protected |
| 859 | 882 | |
| 860 | 883 |
def validate_password_length |
| lib/redmine/acts/mentionable.rb | ||
|---|---|---|
| 44 | 44 | |
| 45 | 45 |
def notified_mentions |
| 46 | 46 |
notified = mentioned_users.to_a |
| 47 |
notified.reject! {|user| user.mail.blank? || user.mail_notification == 'none'}
|
|
| 48 |
notified |
|
| 47 |
notified.select{|user| user.notify_mentioned_user?(self) }
|
|
| 49 | 48 |
end |
| 50 | 49 | |
| 51 | 50 |
private |