summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-10-25 08:52:50 -0400
committerGitHub <noreply@github.com>2017-10-25 08:52:50 -0400
commit1d968eb55eae7f0f6db087c9e8466b11800b888a (patch)
tree5561d7cda13278d217d7b5b19c2ec991819a0f97
parent5474cff0ebab8c42f1b0750ac054a8c762b43a37 (diff)
downloadchat-1d968eb55eae7f0f6db087c9e8466b11800b888a.tar.gz
chat-1d968eb55eae7f0f6db087c9e8466b11800b888a.tar.bz2
chat-1d968eb55eae7f0f6db087c9e8466b11800b888a.zip
PLT-7849 Add config setting to disable plugin uploads (#7666)
* Add config setting to disable plugin uploads * Update unit test
-rw-r--r--api4/plugin.go4
-rw-r--r--api4/plugin_test.go20
-rw-r--r--config/default.json3
-rw-r--r--i18n/en.json6
-rw-r--r--model/config.go11
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)
}