Defect #37187 » 37187.patch
app/models/mail_handler.rb | ||
---|---|---|
182 | 182 |
# Creates a new issue |
183 | 183 |
def receive_issue |
184 | 184 |
project = target_project |
185 | ||
186 |
# Never receive emails to projects where adding issues is not possible |
|
187 |
raise UnauthorizedAction, "not possible to add issues to project [#{project.name}]" unless project.allows_to?(:add_issues) |
|
188 | ||
185 | 189 |
# check permission |
186 | 190 |
unless handler_options[:no_permission_check] |
187 | 191 |
raise UnauthorizedAction, "not allowed to add issues to project [#{project.name}]" unless user.allowed_to?(:add_issues, project) |
... | ... | |
223 | 227 |
return nil |
224 | 228 |
end |
225 | 229 | |
230 |
# Never receive emails to projects where adding issue notes is not possible |
|
231 |
project = issue.project |
|
232 |
raise UnauthorizedAction, "not possible to add notes to project [#{project.name}]" unless project.allows_to?(:add_issue_notes) |
|
233 | ||
226 | 234 |
# check permission |
227 | 235 |
unless handler_options[:no_permission_check] |
228 | 236 |
unless issue.notes_addable? |
... | ... | |
274 | 282 |
return nil |
275 | 283 |
end |
276 | 284 | |
285 |
# Never receive emails to projects where adding messages is not possible |
|
286 |
project = message.project |
|
287 |
raise UnauthorizedAction, "not possible to add messages to project [#{project.name}]" unless project.allows_to?(:add_messages) |
|
288 | ||
277 | 289 |
unless handler_options[:no_permission_check] |
278 | 290 |
raise UnauthorizedAction, "not allowed to add messages to project [#{message.project.name}]" unless user.allowed_to?(:add_messages, message.project) |
279 | 291 |
end |
test/unit/mail_handler_test.rb | ||
---|---|---|
403 | 403 |
end |
404 | 404 |
end |
405 | 405 | |
406 |
def test_no_issue_on_closed_project_without_permission_check |
|
407 |
Project.find(2).close |
|
408 |
assert_no_difference 'User.count' do |
|
409 |
assert_no_difference 'Issue.count' do |
|
410 |
submit_email( |
|
411 |
'ticket_by_unknown_user.eml', |
|
412 |
:issue => {:project => 'onlinestore'}, |
|
413 |
:no_permission_check => '1', |
|
414 |
:unknown_user => 'accept' |
|
415 |
) |
|
416 |
end |
|
417 |
end |
|
418 |
ensure |
|
419 |
Project.find(2).reopen |
|
420 |
end |
|
421 | ||
422 |
def test_no_issue_on_closed_project_without_issue_tracking_module |
|
423 |
assert_no_difference 'User.count' do |
|
424 |
assert_no_difference 'Issue.count' do |
|
425 |
submit_email( |
|
426 |
'ticket_by_unknown_user.eml', |
|
427 |
:issue => {:project => 'subproject2'}, |
|
428 |
:no_permission_check => '1', |
|
429 |
:unknown_user => 'accept' |
|
430 |
) |
|
431 |
end |
|
432 |
end |
|
433 |
end |
|
434 | ||
406 | 435 |
def test_add_issue_by_created_user |
407 | 436 |
Setting.default_language = 'en' |
408 | 437 |
assert_difference 'User.count' do |