##// END OF EJS Templates
Don't use SudoMode.disable! to skip API requests (#19851)....
Jean-Philippe Lang -
r13956:c2fca3799927
parent child
Show More
@@ -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