@@ -61,9 +61,7 module Redmine | |||||
61 | # After the request refreshes the timestamp if sudo mode was used during |
|
61 | # After the request refreshes the timestamp if sudo mode was used during | |
62 | # this request. |
|
62 | # this request. | |
63 | def sudo_mode |
|
63 | def sudo_mode | |
64 | if api_request? |
|
64 | if sudo_timestamp_valid? | |
65 | SudoMode.disable! |
|
|||
66 | elsif sudo_timestamp_valid? |
|
|||
67 | SudoMode.active! |
|
65 | SudoMode.active! | |
68 | end |
|
66 | end | |
69 | yield |
|
67 | yield | |
@@ -145,7 +143,9 module Redmine | |||||
145 | class SudoRequestFilter < Struct.new(:parameters, :request_methods) |
|
143 | class SudoRequestFilter < Struct.new(:parameters, :request_methods) | |
146 | def before(controller) |
|
144 | def before(controller) | |
147 | method_matches = request_methods.blank? || request_methods.include?(controller.request.method_symbol) |
|
145 | method_matches = request_methods.blank? || request_methods.include?(controller.request.method_symbol) | |
148 | if SudoMode.possible? && method_matches |
|
146 | if controller.api_request? | |
|
147 | true | |||
|
148 | elsif SudoMode.possible? && method_matches | |||
149 | controller.require_sudo_mode( *parameters ) |
|
149 | controller.require_sudo_mode( *parameters ) | |
150 | else |
|
150 | else | |
151 | true |
|
151 | true |
@@ -143,4 +143,19 class SudoTest < Redmine::IntegrationTest | |||||
143 | assert_equal 'even.newer.mail@test.com', User.find_by_login('jsmith').mail |
|
143 | assert_equal 'even.newer.mail@test.com', User.find_by_login('jsmith').mail | |
144 | end |
|
144 | end | |
145 |
|
145 | |||
|
146 | def test_sudo_mode_should_skip_api_requests | |||
|
147 | with_settings :rest_api_enabled => '1' do | |||
|
148 | assert_difference('User.count') do | |||
|
149 | post '/users.json', { | |||
|
150 | :user => { | |||
|
151 | :login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname', | |||
|
152 | :mail => 'foo@example.net', :password => 'secret123', | |||
|
153 | :mail_notification => 'only_assigned'} | |||
|
154 | }, | |||
|
155 | credentials('admin') | |||
|
156 | ||||
|
157 | assert_response :created | |||
|
158 | end | |||
|
159 | end | |||
|
160 | end | |||
146 | end |
|
161 | end |
General Comments 0
You need to be logged in to leave comments.
Login now