diff options
-rw-r--r-- | config/config.json | 1 | ||||
-rw-r--r-- | docker/dev/config_docker.json | 1 | ||||
-rw-r--r-- | docker/local/config_docker.json | 1 | ||||
-rw-r--r-- | model/config.go | 6 | ||||
-rw-r--r-- | utils/config.go | 1 | ||||
-rw-r--r-- | web/react/components/admin_console/service_settings.jsx | 34 | ||||
-rw-r--r-- | web/react/stores/error_store.jsx | 1 | ||||
-rw-r--r-- | web/templates/head.html | 5 |
8 files changed, 50 insertions, 0 deletions
diff --git a/config/config.json b/config/config.json index 4477ec63b..beb023e2b 100644 --- a/config/config.json +++ b/config/config.json @@ -10,6 +10,7 @@ "EnablePostUsernameOverride": false, "EnablePostIconOverride": false, "EnableTesting": false, + "EnableDeveloper": true, "EnableSecurityFixAlert": true }, "TeamSettings": { diff --git a/docker/dev/config_docker.json b/docker/dev/config_docker.json index ab1373a44..2c109c105 100644 --- a/docker/dev/config_docker.json +++ b/docker/dev/config_docker.json @@ -10,6 +10,7 @@ "EnablePostUsernameOverride": false, "EnablePostIconOverride": false, "EnableTesting": false, + "EnableDeveloper": false, "EnableSecurityFixAlert": true }, "TeamSettings": { diff --git a/docker/local/config_docker.json b/docker/local/config_docker.json index ab1373a44..2c109c105 100644 --- a/docker/local/config_docker.json +++ b/docker/local/config_docker.json @@ -10,6 +10,7 @@ "EnablePostUsernameOverride": false, "EnablePostIconOverride": false, "EnableTesting": false, + "EnableDeveloper": false, "EnableSecurityFixAlert": true }, "TeamSettings": { diff --git a/model/config.go b/model/config.go index 9030f91ae..06cb9829e 100644 --- a/model/config.go +++ b/model/config.go @@ -33,6 +33,7 @@ type ServiceSettings struct { EnablePostUsernameOverride bool EnablePostIconOverride bool EnableTesting bool + EnableDeveloper *bool EnableSecurityFixAlert *bool } @@ -191,6 +192,11 @@ func (o *Config) SetDefaults() { o.EmailSettings.PasswordResetSalt = NewRandomString(32) } + if o.ServiceSettings.EnableDeveloper == nil { + o.ServiceSettings.EnableDeveloper = new(bool) + *o.ServiceSettings.EnableDeveloper = false + } + if o.ServiceSettings.EnableSecurityFixAlert == nil { o.ServiceSettings.EnableSecurityFixAlert = new(bool) *o.ServiceSettings.EnableSecurityFixAlert = true diff --git a/utils/config.go b/utils/config.go index 0789c101d..3f451b88a 100644 --- a/utils/config.go +++ b/utils/config.go @@ -195,6 +195,7 @@ func getClientConfig(c *model.Config) map[string]string { props["EnableOutgoingWebhooks"] = strconv.FormatBool(c.ServiceSettings.EnableOutgoingWebhooks) props["EnablePostUsernameOverride"] = strconv.FormatBool(c.ServiceSettings.EnablePostUsernameOverride) props["EnablePostIconOverride"] = strconv.FormatBool(c.ServiceSettings.EnablePostIconOverride) + props["EnableDeveloper"] = strconv.FormatBool(*c.ServiceSettings.EnableDeveloper) props["SendEmailNotifications"] = strconv.FormatBool(c.EmailSettings.SendEmailNotifications) props["EnableSignUpWithEmail"] = strconv.FormatBool(c.EmailSettings.EnableSignUpWithEmail) diff --git a/web/react/components/admin_console/service_settings.jsx b/web/react/components/admin_console/service_settings.jsx index 1f5faf1d4..d7582d682 100644 --- a/web/react/components/admin_console/service_settings.jsx +++ b/web/react/components/admin_console/service_settings.jsx @@ -40,6 +40,7 @@ export default class ServiceSettings extends React.Component { config.ServiceSettings.EnablePostUsernameOverride = ReactDOM.findDOMNode(this.refs.EnablePostUsernameOverride).checked; config.ServiceSettings.EnablePostIconOverride = ReactDOM.findDOMNode(this.refs.EnablePostIconOverride).checked; config.ServiceSettings.EnableTesting = ReactDOM.findDOMNode(this.refs.EnableTesting).checked; + config.ServiceSettings.EnableDeveloper = ReactDOM.findDOMNode(this.refs.EnableDeveloper).checked; config.ServiceSettings.EnableSecurityFixAlert = ReactDOM.findDOMNode(this.refs.EnableSecurityFixAlert).checked; //config.ServiceSettings.EnableOAuthServiceProvider = ReactDOM.findDOMNode(this.refs.EnableOAuthServiceProvider).checked; @@ -343,6 +344,39 @@ export default class ServiceSettings extends React.Component { <div className='form-group'> <label className='control-label col-sm-4' + htmlFor='EnableDeveloper' + > + {'Enable Developer Mode: '} + </label> + <div className='col-sm-8'> + <label className='radio-inline'> + <input + type='radio' + name='EnableDeveloper' + value='true' + ref='EnableDeveloper' + defaultChecked={this.props.config.ServiceSettings.EnableDeveloper} + onChange={this.handleChange} + /> + {'true'} + </label> + <label className='radio-inline'> + <input + type='radio' + name='EnableDeveloper' + value='false' + defaultChecked={!this.props.config.ServiceSettings.EnableDeveloper} + onChange={this.handleChange} + /> + {'false'} + </label> + <p className='help-text'>{'(Developer Option) When true, extra information around errors will be displayed in the UI.'}</p> + </div> + </div> + + <div className='form-group'> + <label + className='control-label col-sm-4' htmlFor='EnableSecurityFixAlert' > {'Enable Security Alerts: '} diff --git a/web/react/stores/error_store.jsx b/web/react/stores/error_store.jsx index 8fb051138..69d6cca7f 100644 --- a/web/react/stores/error_store.jsx +++ b/web/react/stores/error_store.jsx @@ -63,3 +63,4 @@ ErrorStore.dispatchToken = AppDispatcher.register((payload) => { }); export default ErrorStore; +window.ErrorStore = ErrorStore; diff --git a/web/templates/head.html b/web/templates/head.html index be4ed2b25..7ffeeec7b 100644 --- a/web/templates/head.html +++ b/web/templates/head.html @@ -85,6 +85,11 @@ type: 'POST', data: JSON.stringify(l) }); + + if (window.mm_config.EnableDeveloper === 'true') { + window.ErrorStore.storeLastError('DEVELOPER MODE: A javascript error has occured. Please use the javascript console to capture and report the error (row: ' + line + ' col: ' + column + ').'); + window.ErrorStore.emitChange(); + } } </script> |