summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lu <david.lu@hotmail.com>2016-07-14 08:18:56 -0400
committerJoram Wilander <jwawilander@gmail.com>2016-07-14 08:18:56 -0400
commit6abc9601bec18e5005ff16dd4147bf038dafb264 (patch)
treec7e6c8611365e84ddf237e6ec661b35a50011f23
parent294981d4a3a36d48c983a3a92cf423910347b4c4 (diff)
downloadchat-6abc9601bec18e5005ff16dd4147bf038dafb264.tar.gz
chat-6abc9601bec18e5005ff16dd4147bf038dafb264.tar.bz2
chat-6abc9601bec18e5005ff16dd4147bf038dafb264.zip
PLT-3192 EE: Restricted site name to 30 characters (#3560)
* Restricted site name to 30 characters * Added maxlength to TextSetting
-rw-r--r--i18n/en.json4
-rw-r--r--model/config.go6
-rw-r--r--webapp/components/admin_console/custom_brand_settings.jsx2
-rw-r--r--webapp/components/admin_console/text_setting.jsx6
-rw-r--r--webapp/utils/constants.jsx2
5 files changed, 19 insertions, 1 deletions
diff --git a/i18n/en.json b/i18n/en.json
index 83beff324..9ec9f393d 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -2780,6 +2780,10 @@
"translation": "Invalid Username attribute. Must be set."
},
{
+ "id": "model.config.is_valid.sitename_length.app_error",
+ "translation": "Site name must be less than or equal to {{.MaxLength}} characters."
+ },
+ {
"id": "model.config.is_valid.sql_data_src.app_error",
"translation": "Invalid data source for SQL settings. Must be set."
},
diff --git a/model/config.go b/model/config.go
index 8e9320008..64396b65e 100644
--- a/model/config.go
+++ b/model/config.go
@@ -44,6 +44,8 @@ const (
RESTRICT_EMOJI_CREATION_ALL = "all"
RESTRICT_EMOJI_CREATION_ADMIN = "admin"
RESTRICT_EMOJI_CREATION_SYSTEM_ADMIN = "system_admin"
+
+ SITENAME_MAX_LENGTH = 30
)
type ServiceSettings struct {
@@ -960,6 +962,10 @@ func (o *Config) IsValid() *AppError {
return NewLocAppError("Config.IsValid", "model.config.is_valid.password_length.app_error", map[string]interface{}{"MinLength": PASSWORD_MINIMUM_LENGTH, "MaxLength": PASSWORD_MAXIMUM_LENGTH}, "")
}
+ if len(o.TeamSettings.SiteName) > SITENAME_MAX_LENGTH {
+ return NewLocAppError("Config.IsValid", "model.config.is_valid.sitename_length.app_error", map[string]interface{}{"MaxLength": SITENAME_MAX_LENGTH}, "")
+ }
+
return nil
}
diff --git a/webapp/components/admin_console/custom_brand_settings.jsx b/webapp/components/admin_console/custom_brand_settings.jsx
index 193889ea9..b4026c4a9 100644
--- a/webapp/components/admin_console/custom_brand_settings.jsx
+++ b/webapp/components/admin_console/custom_brand_settings.jsx
@@ -11,6 +11,7 @@ import BrandImageSetting from './brand_image_setting.jsx';
import {FormattedMessage} from 'react-intl';
import SettingsGroup from './settings_group.jsx';
import TextSetting from './text_setting.jsx';
+import Constants from 'utils/constants.jsx';
export default class CustomBrandSettings extends AdminSettings {
constructor(props) {
@@ -115,6 +116,7 @@ export default class CustomBrandSettings extends AdminSettings {
defaultMessage='Site Name:'
/>
}
+ maxLength={Constants.MAX_SITENAME_LENGTH}
placeholder={Utils.localizeMessage('admin.team.siteNameExample', 'Ex "Mattermost"')}
helpText={
<FormattedMessage
diff --git a/webapp/components/admin_console/text_setting.jsx b/webapp/components/admin_console/text_setting.jsx
index bb37f8e29..a5844aca7 100644
--- a/webapp/components/admin_console/text_setting.jsx
+++ b/webapp/components/admin_console/text_setting.jsx
@@ -4,6 +4,7 @@
import React from 'react';
import Setting from './setting.jsx';
+import Constants from 'utils/constants.jsx';
export default class TextSetting extends React.Component {
static get propTypes() {
@@ -16,6 +17,7 @@ export default class TextSetting extends React.Component {
React.PropTypes.string,
React.PropTypes.number
]).isRequired,
+ maxLength: React.PropTypes.number,
onChange: React.PropTypes.func.isRequired,
disabled: React.PropTypes.bool,
type: React.PropTypes.oneOf([
@@ -27,7 +29,8 @@ export default class TextSetting extends React.Component {
static get defaultProps() {
return {
- type: 'input'
+ type: 'input',
+ maxLength: Constants.MAX_TEXTSETTING_LENGTH
};
}
@@ -51,6 +54,7 @@ export default class TextSetting extends React.Component {
type='text'
placeholder={this.props.placeholder}
value={this.props.value}
+ maxLength={this.props.maxLength}
onChange={this.handleChange}
disabled={this.props.disabled}
/>
diff --git a/webapp/utils/constants.jsx b/webapp/utils/constants.jsx
index 52fb23d51..df9cb3ba4 100644
--- a/webapp/utils/constants.jsx
+++ b/webapp/utils/constants.jsx
@@ -761,6 +761,8 @@ export default {
MAX_PASSWORD_LENGTH: 64,
MIN_TRIGGER_LENGTH: 1,
MAX_TRIGGER_LENGTH: 128,
+ MAX_TEXTSETTING_LENGTH: 1024,
+ MAX_SITENAME_LENGTH: 30,
TIME_SINCE_UPDATE_INTERVAL: 30000,
MIN_HASHTAG_LINK_LENGTH: 3,
CHANNEL_SCROLL_ADJUSTMENT: 100,