From a941ce5fffbece239d0079276a2521d4571dd86d Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Mon, 11 Mar 2019 06:58:59 -0300 Subject: [PATCH] Add Office 365 login support (#2628) --- app/constants/view.js | 1 + app/screens/login_options/login_options.js | 36 ++++++++++++++++++++++ app/screens/select_server/select_server.js | 3 +- app/screens/sso/sso.js | 6 ++++ assets/base/config.json | 1 + assets/base/i18n/en.json | 1 + 6 files changed, 47 insertions(+), 1 deletion(-) diff --git a/app/constants/view.js b/app/constants/view.js index 0c2350029..b885a87e9 100644 --- a/app/constants/view.js +++ b/app/constants/view.js @@ -58,6 +58,7 @@ const ViewTypes = keyMirror({ REMOVE_LAST_CHANNEL_FOR_TEAM: null, GITLAB: null, + OFFICE365: null, SAML: null, SET_INITIAL_POST_VISIBILITY: null, diff --git a/app/screens/login_options/login_options.js b/app/screens/login_options/login_options.js index a65133a10..7ce99601c 100644 --- a/app/screens/login_options/login_options.js +++ b/app/screens/login_options/login_options.js @@ -188,6 +188,41 @@ class LoginOptions extends PureComponent { return null; }; + renderO365Option = () => { + const {config, license} = this.props; + const forceHideFromLocal = LocalConfig.HideO365LoginExperimental; + const o365Enabled = config.EnableSignUpWithOffice365 === 'true' && license.IsLicensed === 'true' && license.Office365OAuth === 'true'; + + if (!forceHideFromLocal && o365Enabled) { + const backgroundColor = config.EmailLoginButtonColor || '#2389d7'; + const additionalStyle = { + backgroundColor, + }; + + if (config.EmailLoginButtonBorderColor) { + additionalStyle.borderColor = config.EmailLoginButtonBorderColor; + } + + const textColor = config.EmailLoginButtonTextColor || 'white'; + + return ( + + ); + } + + return null; + }; + renderSamlOption = () => { const {config, license} = this.props; const forceHideFromLocal = LocalConfig.HideSAMLLoginExperimental; @@ -255,6 +290,7 @@ class LoginOptions extends PureComponent { {this.renderLdapOption()} {this.renderGitlabOption()} {this.renderSamlOption()} + {this.renderO365Option()} ); } diff --git a/app/screens/select_server/select_server.js b/app/screens/select_server/select_server.js index b9285967e..d11927d0d 100644 --- a/app/screens/select_server/select_server.js +++ b/app/screens/select_server/select_server.js @@ -205,9 +205,10 @@ export default class SelectServer extends PureComponent { const {config, license} = props; const samlEnabled = config.EnableSaml === 'true' && license.IsLicensed === 'true' && license.SAML === 'true'; const gitlabEnabled = config.EnableSignUpWithGitLab === 'true'; + const o365Enabled = config.EnableSignUpWithOffice365 === 'true' && license.IsLicensed === 'true' && license.Office365OAuth === 'true'; let options = 0; - if (samlEnabled || gitlabEnabled) { + if (samlEnabled || gitlabEnabled || o365Enabled) { options += 1; } diff --git a/app/screens/sso/sso.js b/app/screens/sso/sso.js index dd4d7011c..ffef65138 100644 --- a/app/screens/sso/sso.js +++ b/app/screens/sso/sso.js @@ -90,6 +90,10 @@ class SSO extends PureComponent { this.loginUrl = `${props.serverUrl}/login/sso/saml?action=mobile`; this.completedUrl = '/login/sso/saml'; break; + case ViewTypes.OFFICE365: + this.loginUrl = `${props.serverUrl}/oauth/office365/mobile_login`; + this.completedUrl = '/signup/office365/complete'; + break; } } @@ -234,6 +238,8 @@ class SSO extends PureComponent { onLoadEnd={this.onLoadEnd} onMessage={messagingEnabled ? this.onMessage : null} useWebKit={true} + useSharedProcessPool={true} + cacheEnabled={true} /> ); } diff --git a/assets/base/config.json b/assets/base/config.json index f85cd1e50..25f321eda 100644 --- a/assets/base/config.json +++ b/assets/base/config.json @@ -17,6 +17,7 @@ "HideGitLabLoginExperimental": false, "HideLDAPLoginExperimental": false, "HideSAMLLoginExperimental": false, + "HideO365LoginExperimental": false, "SentryEnabled": false, "SentryDsnIos": "", diff --git a/assets/base/i18n/en.json b/assets/base/i18n/en.json index 676de02eb..81da5d375 100644 --- a/assets/base/i18n/en.json +++ b/assets/base/i18n/en.json @@ -498,6 +498,7 @@ "sidebar.unreadSection": "UNREADS", "sidebar.unreads": "More unreads", "signup.email": "Email and Password", + "signup.office365": "Office 365", "status_dropdown.set_away": "Away", "status_dropdown.set_dnd": "Do Not Disturb", "status_dropdown.set_offline": "Offline",