summaryrefslogtreecommitdiffstats
path: root/web/react/components/admin_console/image_settings.jsx
diff options
context:
space:
mode:
author=Corey Hulen <corey@hulen.com>2015-09-22 12:12:50 -0700
committer=Corey Hulen <corey@hulen.com>2015-09-22 12:12:50 -0700
commit88e5a71e8c93b495cedaa07931a4f8052d9f12ed (patch)
tree603174fc3758d56b8a027b9e1fbe1a5d8690b3e6 /web/react/components/admin_console/image_settings.jsx
parent08a3acbb44b043b9bb56f9b96e91432352d06d1a (diff)
downloadchat-88e5a71e8c93b495cedaa07931a4f8052d9f12ed.tar.gz
chat-88e5a71e8c93b495cedaa07931a4f8052d9f12ed.tar.bz2
chat-88e5a71e8c93b495cedaa07931a4f8052d9f12ed.zip
Adding service settings to admin console
Diffstat (limited to 'web/react/components/admin_console/image_settings.jsx')
-rw-r--r--web/react/components/admin_console/image_settings.jsx45
1 files changed, 45 insertions, 0 deletions
diff --git a/web/react/components/admin_console/image_settings.jsx b/web/react/components/admin_console/image_settings.jsx
index c0cbb5aa6..80da0a47f 100644
--- a/web/react/components/admin_console/image_settings.jsx
+++ b/web/react/components/admin_console/image_settings.jsx
@@ -3,6 +3,7 @@
var Client = require('../../utils/client.jsx');
var AsyncClient = require('../../utils/async_client.jsx');
+var crypto = require('crypto');
export default class ImageSettings extends React.Component {
constructor(props) {
@@ -10,6 +11,7 @@ export default class ImageSettings extends React.Component {
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
+ this.handleGenerate = this.handleGenerate.bind(this);
this.state = {
saveNeeded: false,
@@ -28,6 +30,13 @@ export default class ImageSettings extends React.Component {
this.setState(s);
}
+ handleGenerate(e) {
+ e.preventDefault();
+ React.findDOMNode(this.refs.PublicLinkSalt).value = crypto.randomBytes(256).toString('base64').substring(0, 31);
+ var s = {saveNeeded: true, serverError: this.state.serverError};
+ this.setState(s);
+ }
+
handleSubmit(e) {
e.preventDefault();
$('#save-button').button('loading');
@@ -41,6 +50,13 @@ export default class ImageSettings extends React.Component {
config.ImageSettings.AmazonS3Region = React.findDOMNode(this.refs.AmazonS3Region).value;
config.ImageSettings.EnablePublicLink = React.findDOMNode(this.refs.EnablePublicLink).checked;
+ config.ImageSettings.PublicLinkSalt = React.findDOMNode(this.refs.PublicLinkSalt).value.trim();
+
+ if (config.ImageSettings.PublicLinkSalt === '') {
+ config.ImageSettings.PublicLinkSalt = crypto.randomBytes(256).toString('base64').substring(0, 31);
+ React.findDOMNode(this.refs.PublicLinkSalt).value = config.ImageSettings.PublicLinkSalt;
+ }
+
var thumbnailWidth = 120;
if (!isNaN(parseInt(React.findDOMNode(this.refs.ThumbnailWidth).value, 10))) {
thumbnailWidth = parseInt(React.findDOMNode(this.refs.ThumbnailWidth).value, 10);
@@ -425,6 +441,35 @@ export default class ImageSettings extends React.Component {
</div>
<div className='form-group'>
+ <label
+ className='control-label col-sm-4'
+ htmlFor='PublicLinkSalt'
+ >
+ {'Public Link Salt:'}
+ </label>
+ <div className='col-sm-8'>
+ <input
+ type='text'
+ className='form-control'
+ id='PublicLinkSalt'
+ ref='PublicLinkSalt'
+ placeholder='Ex "gxHVDcKUyP2y1eiyW8S8na1UYQAfq6J6"'
+ defaultValue={this.props.config.ImageSettings.PublicLinkSalt}
+ onChange={this.handleChange}
+ />
+ <p className='help-text'>{'32-character salt added to signing of public image links.'}</p>
+ <div className='help-text'>
+ <button
+ className='help-link'
+ onClick={this.handleGenerate}
+ >
+ {'Re-Generate'}
+ </button>
+ </div>
+ </div>
+ </div>
+
+ <div className='form-group'>
<div className='col-sm-12'>
{serverError}
<button