diff options
-rw-r--r-- | api4/plugin.go | 4 | ||||
-rw-r--r-- | api4/plugin_test.go | 20 | ||||
-rw-r--r-- | config/default.json | 3 | ||||
-rw-r--r-- | i18n/en.json | 6 | ||||
-rw-r--r-- | 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) } |