From fd53e3b7868234af328cd73150318fc8e7a26b89 Mon Sep 17 00:00:00 2001
From: Harrison Healey <harrisonmhealey@gmail.com>
Date: Tue, 17 May 2016 07:21:39 -0400
Subject: PLT-2257 Reorganized System Console  (#3003)

* Reorganized system console

* Fixed the names of some components

* Fixed timestamp for BrandImageSetting

* Fixed merge issues

* Updated push notification settings to match master branch

* Removed top level setting pages and moved enable Gitlab/LDAP settings onto their respective pages

* Re-added restrictDirectMessage setting to system console

* Re-added email connection test and fixed some margins

* Fixed ESLint errors

* Renamed Authentication > Onboarding to Authentication > Email in the system console

* Renamed Customization > Whitelabeling to Customization > Custom Branding in System Console

* Re-added EnableOpenServer to system console
---
 .../components/admin_console/webhook_settings.jsx  | 166 +++++++++++++++++++++
 1 file changed, 166 insertions(+)
 create mode 100644 webapp/components/admin_console/webhook_settings.jsx

(limited to 'webapp/components/admin_console/webhook_settings.jsx')

diff --git a/webapp/components/admin_console/webhook_settings.jsx b/webapp/components/admin_console/webhook_settings.jsx
new file mode 100644
index 000000000..1c125cd0f
--- /dev/null
+++ b/webapp/components/admin_console/webhook_settings.jsx
@@ -0,0 +1,166 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import React from 'react';
+
+import AdminSettings from './admin_settings.jsx';
+import BooleanSetting from './boolean_setting.jsx';
+import {FormattedMessage} from 'react-intl';
+import SettingsGroup from './settings_group.jsx';
+
+export default class WebhookSettings extends AdminSettings {
+    constructor(props) {
+        super(props);
+
+        this.getConfigFromState = this.getConfigFromState.bind(this);
+
+        this.renderSettings = this.renderSettings.bind(this);
+
+        this.state = Object.assign(this.state, {
+            enableIncomingWebhooks: props.config.ServiceSettings.EnableIncomingWebhooks,
+            enableOutgoingWebhooks: props.config.ServiceSettings.EnableOutgoingWebhooks,
+            enableCommands: props.config.ServiceSettings.EnableCommands,
+            enableOnlyAdminIntegrations: props.config.ServiceSettings.EnableOnlyAdminIntegrations,
+            enablePostUsernameOverride: props.config.ServiceSettings.EnablePostUsernameOverride,
+            enablePostIconOverride: props.config.ServiceSettings.EnablePostIconOverride
+        });
+    }
+
+    getConfigFromState(config) {
+        config.ServiceSettings.EnableIncomingWebhooks = this.state.enableIncomingWebhooks;
+        config.ServiceSettings.EnableOutgoingWebhooks = this.state.enableOutgoingWebhooks;
+        config.ServiceSettings.EnableCommands = this.state.enableCommands;
+        config.ServiceSettings.EnableOnlyAdminIntegrations = this.state.enableOnlyAdminIntegrations;
+        config.ServiceSettings.EnablePostUsernameOverride = this.state.enablePostUsernameOverride;
+        config.ServiceSettings.EnablePostIconOverride = this.state.enablePostIconOverride;
+
+        return config;
+    }
+
+    renderTitle() {
+        return (
+            <h3>
+                <FormattedMessage
+                    id='admin.integration.title'
+                    defaultMessage='Integration Settings'
+                />
+            </h3>
+        );
+    }
+
+    renderSettings() {
+        return (
+            <SettingsGroup
+                header={
+                    <FormattedMessage
+                        id='admin.integrations.webhook'
+                        defaultMessage='Webhooks and Commands'
+                    />
+                }
+            >
+                <BooleanSetting
+                    id='enableIncomingWebhooks'
+                    label={
+                        <FormattedMessage
+                            id='admin.service.webhooksTitle'
+                            defaultMessage='Enable Incoming Webhooks: '
+                        />
+                    }
+                    helpText={
+                        <FormattedMessage
+                            id='admin.service.webhooksDescription'
+                            defaultMessage='When true, incoming webhooks will be allowed. To help combat phishing attacks, all posts from webhooks will be labelled by a BOT tag.'
+                        />
+                    }
+                    value={this.state.enableIncomingWebhooks}
+                    onChange={this.handleChange}
+                />
+                <BooleanSetting
+                    id='enableOutgoingWebhooks'
+                    label={
+                        <FormattedMessage
+                            id='admin.service.outWebhooksTitle'
+                            defaultMessage='Enable Outgoing Webhooks: '
+                        />
+                    }
+                    helpText={
+                        <FormattedMessage
+                            id='admin.service.outWebhooksDesc'
+                            defaultMessage='When true, outgoing webhooks will be allowed.'
+                        />
+                    }
+                    value={this.state.enableOutgoingWebhooks}
+                    onChange={this.handleChange}
+                />
+                <BooleanSetting
+                    id='enableCommands'
+                    label={
+                        <FormattedMessage
+                            id='admin.service.cmdsTitle'
+                            defaultMessage='Enable Slash Commands: '
+                        />
+                    }
+                    helpText={
+                        <FormattedMessage
+                            id='admin.service.cmdsDesc'
+                            defaultMessage='When true, user created slash commands will be allowed.'
+                        />
+                    }
+                    value={this.state.enableCommands}
+                    onChange={this.handleChange}
+                />
+                <BooleanSetting
+                    id='enableOnlyAdminIntegrations'
+                    label={
+                        <FormattedMessage
+                            id='admin.service.integrationAdmin'
+                            defaultMessage='Enable Integrations for Admin Only: '
+                        />
+                    }
+                    helpText={
+                        <FormattedMessage
+                            id='admin.service.integrationAdminDesc'
+                            defaultMessage='When true, user created integrations can only be created by admins.'
+                        />
+                    }
+                    value={this.state.enableOnlyAdminIntegrations}
+                    onChange={this.handleChange}
+                />
+                <BooleanSetting
+                    id='enablePostUsernameOverride'
+                    label={
+                        <FormattedMessage
+                            id='admin.service.overrideTitle'
+                            defaultMessage='Enable Overriding Usernames from Webhooks and Slash Commands: '
+                        />
+                    }
+                    helpText={
+                        <FormattedMessage
+                            id='admin.service.overrideDescription'
+                            defaultMessage='When true, webhooks and slash commands will be allowed to change the username they are posting as. Note, combined with allowing icon overriding, this could open users up to phishing attacks.'
+                        />
+                    }
+                    value={this.state.enablePostUsernameOverride}
+                    onChange={this.handleChange}
+                />
+                <BooleanSetting
+                    id='enablePostIconOverride'
+                    label={
+                        <FormattedMessage
+                            id='admin.service.iconTitle'
+                            defaultMessage='Enable Overriding Icon from Webhooks and Slash Commands: '
+                        />
+                    }
+                    helpText={
+                        <FormattedMessage
+                            id='admin.service.iconDescription'
+                            defaultMessage='When true, webhooks and slash commands will be allowed to change the icon they post with. Note, combined with allowing username overriding, this could open users up to phishing attacks.'
+                        />
+                    }
+                    value={this.state.enablePostIconOverride}
+                    onChange={this.handleChange}
+                />
+            </SettingsGroup>
+        );
+    }
+}
\ No newline at end of file
-- 
cgit v1.2.3-1-g7c22

