@@ -29,7 +29,9 class MailHandler < ActionMailer::Base | |||
|
29 | 29 | |
|
30 | 30 | @@handler_options[:issue] ||= {} |
|
31 | 31 | |
|
32 | @@handler_options[:allow_override] = @@handler_options[:allow_override].split(',').collect(&:strip) if @@handler_options[:allow_override].is_a?(String) | |
|
32 | if @@handler_options[:allow_override].is_a?(String) | |
|
33 | @@handler_options[:allow_override] = @@handler_options[:allow_override].split(',').collect(&:strip) | |
|
34 | end | |
|
33 | 35 | @@handler_options[:allow_override] ||= [] |
|
34 | 36 | # Project needs to be overridable if not specified |
|
35 | 37 | @@handler_options[:allow_override] << 'project' unless @@handler_options[:issue].has_key?(:project) |
@@ -47,12 +49,16 class MailHandler < ActionMailer::Base | |||
|
47 | 49 | sender_email = email.from.to_a.first.to_s.strip |
|
48 | 50 | # Ignore emails received from the application emission address to avoid hell cycles |
|
49 | 51 | if sender_email.downcase == Setting.mail_from.to_s.strip.downcase |
|
50 | logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" if logger && logger.info | |
|
52 | if logger && logger.info | |
|
53 | logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" | |
|
54 | end | |
|
51 | 55 | return false |
|
52 | 56 | end |
|
53 | 57 | @user = User.find_by_mail(sender_email) if sender_email.present? |
|
54 | 58 | if @user && !@user.active? |
|
55 | logger.info "MailHandler: ignoring email from non-active user [#{@user.login}]" if logger && logger.info | |
|
59 | if logger && logger.info | |
|
60 | logger.info "MailHandler: ignoring email from non-active user [#{@user.login}]" | |
|
61 | end | |
|
56 | 62 | return false |
|
57 | 63 | end |
|
58 | 64 | if @user.nil? |
@@ -63,15 +69,21 class MailHandler < ActionMailer::Base | |||
|
63 | 69 | when 'create' |
|
64 | 70 | @user = create_user_from_email |
|
65 | 71 | if @user |
|
66 | logger.info "MailHandler: [#{@user.login}] account created" if logger && logger.info | |
|
72 | if logger && logger.info | |
|
73 | logger.info "MailHandler: [#{@user.login}] account created" | |
|
74 | end | |
|
67 | 75 | Mailer.deliver_account_information(@user, @user.password) |
|
68 | 76 | else |
|
69 | logger.error "MailHandler: could not create account for [#{sender_email}]" if logger && logger.error | |
|
77 | if logger && logger.error | |
|
78 | logger.error "MailHandler: could not create account for [#{sender_email}]" | |
|
79 | end | |
|
70 | 80 | return false |
|
71 | 81 | end |
|
72 | 82 | else |
|
73 | 83 | # Default behaviour, emails from unknown users are ignored |
|
74 | logger.info "MailHandler: ignoring email from unknown user [#{sender_email}]" if logger && logger.info | |
|
84 | if logger && logger.info | |
|
85 | logger.info "MailHandler: ignoring email from unknown user [#{sender_email}]" | |
|
86 | end | |
|
75 | 87 | return false |
|
76 | 88 | end |
|
77 | 89 | end |
@@ -149,7 +161,10 class MailHandler < ActionMailer::Base | |||
|
149 | 161 | return unless issue |
|
150 | 162 | # check permission |
|
151 | 163 | unless @@handler_options[:no_permission_check] |
|
152 |
|
|
|
164 | unless user.allowed_to?(:add_issue_notes, issue.project) || | |
|
165 | user.allowed_to?(:edit_issues, issue.project) | |
|
166 | raise UnauthorizedAction | |
|
167 | end | |
|
153 | 168 | end |
|
154 | 169 | |
|
155 | 170 | # ignore CLI-supplied defaults for new issues |
@@ -161,7 +176,9 class MailHandler < ActionMailer::Base | |||
|
161 | 176 | journal.notes = cleaned_up_text_body |
|
162 | 177 | add_attachments(issue) |
|
163 | 178 | issue.save! |
|
164 | logger.info "MailHandler: issue ##{issue.id} updated by #{user}" if logger && logger.info | |
|
179 | if logger && logger.info | |
|
180 | logger.info "MailHandler: issue ##{issue.id} updated by #{user}" | |
|
181 | end | |
|
165 | 182 | journal |
|
166 | 183 | end |
|
167 | 184 | |
@@ -192,7 +209,9 class MailHandler < ActionMailer::Base | |||
|
192 | 209 | add_attachments(reply) |
|
193 | 210 | reply |
|
194 | 211 | else |
|
195 | logger.info "MailHandler: ignoring reply from [#{sender_email}] to a locked topic" if logger && logger.info | |
|
212 | if logger && logger.info | |
|
213 | logger.info "MailHandler: ignoring reply from [#{sender_email}] to a locked topic" | |
|
214 | end | |
|
196 | 215 | end |
|
197 | 216 | end |
|
198 | 217 | end |
@@ -241,8 +260,12 class MailHandler < ActionMailer::Base | |||
|
241 | 260 | def extract_keyword!(text, attr, format=nil) |
|
242 | 261 | keys = [attr.to_s.humanize] |
|
243 | 262 | if attr.is_a?(Symbol) |
|
244 | keys << l("field_#{attr}", :default => '', :locale => user.language) if user && user.language.present? | |
|
245 |
keys << l("field_#{attr}", :default => '', :locale => |
|
|
263 | if user && user.language.present? | |
|
264 | keys << l("field_#{attr}", :default => '', :locale => user.language) | |
|
265 | end | |
|
266 | if Setting.default_language.present? | |
|
267 | keys << l("field_#{attr}", :default => '', :locale => Setting.default_language) | |
|
268 | end | |
|
246 | 269 | end |
|
247 | 270 | keys.reject! {|k| k.blank?} |
|
248 | 271 | keys.collect! {|k| Regexp.escape(k)} |
@@ -388,10 +411,16 class MailHandler < ActionMailer::Base | |||
|
388 | 411 | keyword = keyword.to_s.downcase |
|
389 | 412 | assignable = issue.assignable_users |
|
390 | 413 | assignee = nil |
|
391 | assignee ||= assignable.detect {|a| a.mail.to_s.downcase == keyword || a.login.to_s.downcase == keyword} | |
|
414 | assignee ||= assignable.detect {|a| | |
|
415 | a.mail.to_s.downcase == keyword || | |
|
416 | a.login.to_s.downcase == keyword | |
|
417 | } | |
|
392 | 418 | if assignee.nil? && keyword.match(/ /) |
|
393 | 419 | firstname, lastname = *(keyword.split) # "First Last Throwaway" |
|
394 | assignee ||= assignable.detect {|a| a.is_a?(User) && a.firstname.to_s.downcase == firstname && a.lastname.to_s.downcase == lastname} | |
|
420 | assignee ||= assignable.detect {|a| | |
|
421 | a.is_a?(User) && a.firstname.to_s.downcase == firstname && | |
|
422 | a.lastname.to_s.downcase == lastname | |
|
423 | } | |
|
395 | 424 | end |
|
396 | 425 | if assignee.nil? |
|
397 | 426 | assignee ||= assignable.detect {|a| a.is_a?(Group) && a.name.downcase == keyword} |
General Comments 0
You need to be logged in to leave comments.
Login now