diff options
author | David Lu <david.lu@hotmail.com> | 2016-07-14 08:18:56 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2016-07-14 08:18:56 -0400 |
commit | 6abc9601bec18e5005ff16dd4147bf038dafb264 (patch) | |
tree | c7e6c8611365e84ddf237e6ec661b35a50011f23 | |
parent | 294981d4a3a36d48c983a3a92cf423910347b4c4 (diff) | |
download | chat-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.json | 4 | ||||
-rw-r--r-- | model/config.go | 6 | ||||
-rw-r--r-- | webapp/components/admin_console/custom_brand_settings.jsx | 2 | ||||
-rw-r--r-- | webapp/components/admin_console/text_setting.jsx | 6 | ||||
-rw-r--r-- | webapp/utils/constants.jsx | 2 |
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, |