From 1d968eb55eae7f0f6db087c9e8466b11800b888a Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 25 Oct 2017 08:52:50 -0400 Subject: PLT-7849 Add config setting to disable plugin uploads (#7666) * Add config setting to disable plugin uploads * Update unit test --- api4/plugin.go | 4 ++-- api4/plugin_test.go | 20 +++++++++++++++++--- config/default.json | 3 ++- i18n/en.json | 6 +++++- model/config.go | 11 ++++++++--- 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/api4/plugin.go b/api4/plugin.go index c1ee986da..155a5c807 100644 --- a/api4/plugin.go +++ b/api4/plugin.go @@ -32,8 +32,8 @@ func (api *API) InitPlugin() { } func uploadPlugin(c *Context, w http.ResponseWriter, r *http.Request) { - if !*c.App.Config().PluginSettings.Enable { - c.Err = model.NewAppError("uploadPlugin", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented) + if !*c.App.Config().PluginSettings.Enable || !*c.App.Config().PluginSettings.EnableUploads { + c.Err = model.NewAppError("uploadPlugin", "app.plugin.upload_disabled.app_error", nil, "", http.StatusNotImplemented) return } diff --git a/api4/plugin_test.go b/api4/plugin_test.go index a3f3bd49a..48ee4fb74 100644 --- a/api4/plugin_test.go +++ b/api4/plugin_test.go @@ -28,10 +28,17 @@ func TestPlugin(t *testing.T) { defer th.TearDown() enablePlugins := *th.App.Config().PluginSettings.Enable + enableUploadPlugins := *th.App.Config().PluginSettings.EnableUploads defer func() { - th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = enablePlugins }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.PluginSettings.Enable = enablePlugins + *cfg.PluginSettings.EnableUploads = enableUploadPlugins + }) }() - th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.PluginSettings.Enable = true + *cfg.PluginSettings.EnableUploads = true + }) th.App.InitPlugins(pluginDir, webappDir) defer func() { @@ -61,7 +68,14 @@ func TestPlugin(t *testing.T) { _, resp = th.SystemAdminClient.UploadPlugin(file) CheckNotImplementedStatus(t, resp) - th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.PluginSettings.Enable = true + *cfg.PluginSettings.EnableUploads = false + }) + _, resp = th.SystemAdminClient.UploadPlugin(file) + CheckNotImplementedStatus(t, resp) + + th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.EnableUploads = true }) _, resp = th.Client.UploadPlugin(file) CheckForbiddenStatus(t, resp) diff --git a/config/default.json b/config/default.json index 350b4789f..b85fec527 100644 --- a/config/default.json +++ b/config/default.json @@ -332,7 +332,8 @@ "RunScheduler": true }, "PluginSettings": { - "Enable": false, + "Enable": true, + "EnableUploads": false, "Plugins": {} } } diff --git a/i18n/en.json b/i18n/en.json index 712aa0b23..f1400da0b 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -3489,7 +3489,11 @@ }, { "id": "app.plugin.disabled.app_error", - "translation": "Plugins have been disabled by the system admin or the server has not been restarted since they were enabled." + "translation": "Plugins have been disabled." + }, + { + "id": "app.plugin.upload_disabled.app_error", + "translation": "Plugins and/or plugin uploads have been disabled." }, { "id": "app.plugin.extract.app_error", diff --git a/model/config.go b/model/config.go index 4eee71737..493a432bb 100644 --- a/model/config.go +++ b/model/config.go @@ -511,9 +511,10 @@ type PluginState struct { } type PluginSettings struct { - Enable *bool - Plugins map[string]interface{} - PluginStates map[string]*PluginState + Enable *bool + EnableUploads *bool + Plugins map[string]interface{} + PluginStates map[string]*PluginState } type Config struct { @@ -1459,6 +1460,10 @@ func (o *Config) SetDefaults() { } if o.PluginSettings.Enable == nil { + o.PluginSettings.Enable = NewBool(true) + } + + if o.PluginSettings.EnableUploads == nil { o.PluginSettings.Enable = NewBool(false) } -- cgit v1.2.3-1-g7c22