Skip to content

Commit 6f22cf2

Browse files
ZogStriPrwdaigle
authored andcommitted
BUGFIX: hide sensitive site settings
1 parent 49329e5 commit 6f22cf2

File tree

4 files changed

+21
-16
lines changed

4 files changed

+21
-16
lines changed

app/assets/javascripts/admin/models/site_setting.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,10 @@ Discourse.SiteSetting = Discourse.Model.extend({
7171
**/
7272
save: function() {
7373
// Update the setting
74-
var setting = this;
75-
return Discourse.ajax("/admin/site_settings/" + (this.get('setting')), {
76-
data: { value: this.get('value') },
74+
var setting = this, data = {};
75+
data[this.get('setting')] = this.get('value');
76+
return Discourse.ajax("/admin/site_settings/" + this.get('setting'), {
77+
data: data,
7778
type: 'PUT'
7879
}).then(function() {
7980
setting.set('originalValue', setting.get('value'));

app/controllers/admin/site_settings_controller.rb

+5-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ def index
77
end
88

99
def update
10-
raise ActionController::ParameterMissing.new(:value) unless params.has_key?(:value)
11-
StaffActionLogger.new(current_user).log_site_setting_change(params[:id], SiteSetting.send("#{params[:id]}"), params[:value]) if SiteSetting.respond_to?(params[:id])
12-
SiteSetting.send("#{params[:id]}=", params[:value])
10+
params.require(:id)
11+
id = params[:id]
12+
value = params[id]
13+
StaffActionLogger.new(current_user).log_site_setting_change(id, SiteSetting.send(id), value) if SiteSetting.respond_to?(id)
14+
SiteSetting.send("#{id}=", value)
1315
render nothing: true
1416
end
1517

config/application.rb

+9-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,15 @@ class Application < Rails::Application
8888
config.encoding = 'utf-8'
8989

9090
# Configure sensitive parameters which will be filtered from the log file.
91-
config.filter_parameters += [:password]
91+
config.filter_parameters += [
92+
:password,
93+
:pop3s_polling_password,
94+
:s3_secret_access_key,
95+
:twitter_consumer_secret,
96+
:facebook_app_secret,
97+
:github_client_secret,
98+
:discourse_org_access_key,
99+
]
92100

93101
# Enable the asset pipeline
94102
config.assets.enabled = true

spec/controllers/admin/site_settings_controller_spec.rb

+3-9
Original file line numberDiff line numberDiff line change
@@ -25,30 +25,24 @@
2525

2626
context 'update' do
2727

28-
it 'requires a value parameter' do
29-
lambda { xhr :put, :update, id: 'test_setting' }.should raise_error(ActionController::ParameterMissing)
30-
end
31-
3228
it 'sets the value when the param is present' do
3329
SiteSetting.expects(:'test_setting=').with('hello').once
34-
xhr :put, :update, id: 'test_setting', value: 'hello'
30+
xhr :put, :update, id: 'test_setting', test_setting: 'hello'
3531
end
3632

3733
it 'allows value to be a blank string' do
3834
SiteSetting.expects(:'test_setting=').with('').once
39-
xhr :put, :update, id: 'test_setting', value: ''
35+
xhr :put, :update, id: 'test_setting', test_setting: ''
4036
end
4137

4238
it 'logs the change' do
4339
SiteSetting.stubs(:test_setting).returns('previous')
4440
SiteSetting.expects(:'test_setting=').with('hello').once
4541
StaffActionLogger.any_instance.expects(:log_site_setting_change).with('test_setting', 'previous', 'hello')
46-
xhr :put, :update, id: 'test_setting', value: 'hello'
42+
xhr :put, :update, id: 'test_setting', test_setting: 'hello'
4743
end
4844
end
4945

5046
end
5147

52-
53-
5448
end

0 commit comments

Comments
 (0)