diff options
-rw-r--r-- | api/oauth.go | 7 | ||||
-rw-r--r-- | api/user.go | 2 | ||||
-rw-r--r-- | webapp/action_creators/global_actions.jsx | 9 | ||||
-rw-r--r-- | webapp/action_creators/websocket_actions.jsx | 1 | ||||
-rw-r--r-- | webapp/components/claim/components/email_to_ldap.jsx | 14 | ||||
-rw-r--r-- | webapp/components/login.jsx | 12 | ||||
-rw-r--r-- | webapp/components/root.jsx | 2 | ||||
-rw-r--r-- | webapp/components/signup_user_complete.jsx | 12 | ||||
-rw-r--r-- | webapp/components/suggestion/search_suggestion_list.jsx | 1 | ||||
-rw-r--r-- | webapp/components/team_signup_with_sso.jsx | 2 | ||||
-rw-r--r-- | webapp/components/user_settings/user_settings_modal.jsx | 14 | ||||
-rw-r--r-- | webapp/components/user_settings/user_settings_security.jsx | 1 | ||||
-rw-r--r-- | webapp/components/user_settings/user_settings_theme.jsx | 13 | ||||
-rw-r--r-- | webapp/root.jsx | 2 | ||||
-rw-r--r-- | webapp/stores/notification_store.jsx (renamed from webapp/stores/notificaiton_store.jsx) | 0 |
15 files changed, 50 insertions, 42 deletions
diff --git a/api/oauth.go b/api/oauth.go index 9b7f3699d..a7119d7e5 100644 --- a/api/oauth.go +++ b/api/oauth.go @@ -29,11 +29,14 @@ func InitOAuth(r *mux.Router) { sr.Handle("/authorize", ApiUserRequired(authorizeOAuth)).Methods("GET") sr.Handle("/access_token", ApiAppHandler(getAccessToken)).Methods("POST") - // Also handle this a the old routes remove soon apiv2? mr := Srv.Router mr.Handle("/authorize", ApiUserRequired(authorizeOAuth)).Methods("GET") mr.Handle("/access_token", ApiAppHandler(getAccessToken)).Methods("POST") + + // Handle all the old routes, to be later removed mr.Handle("/{service:[A-Za-z]+}/complete", AppHandlerIndependent(completeOAuth)).Methods("GET") + mr.Handle("/signup/{service:[A-Za-z]+}/complete", AppHandlerIndependent(completeOAuth)).Methods("GET") + mr.Handle("/login/{service:[A-Za-z]+}/complete", AppHandlerIndependent(completeOAuth)).Methods("GET") } func registerOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) { @@ -185,7 +188,7 @@ func completeOAuth(c *Context, w http.ResponseWriter, r *http.Request) { code := r.URL.Query().Get("code") state := r.URL.Query().Get("state") - uri := c.GetSiteURL() + "/api/v1/oauth/" + service + "/complete" + uri := c.GetSiteURL() + "/signup/" + service + "/complete" if body, team, props, err := AuthorizeOAuthUser(service, code, state, uri); err != nil { c.Err = err diff --git a/api/user.go b/api/user.go index 6803a946c..43969158a 100644 --- a/api/user.go +++ b/api/user.go @@ -1938,7 +1938,7 @@ func GetAuthorizationCode(c *Context, service, teamName string, props map[string props["team"] = teamName state := b64.StdEncoding.EncodeToString([]byte(model.MapToJson(props))) - redirectUri := c.GetSiteURL() + "/api/v1/oauth/" + service + "/complete" + redirectUri := c.GetSiteURL() + "/signup/" + service + "/complete" authUrl := endpoint + "?response_type=code&client_id=" + clientId + "&redirect_uri=" + url.QueryEscape(redirectUri) + "&state=" + url.QueryEscape(state) diff --git a/webapp/action_creators/global_actions.jsx b/webapp/action_creators/global_actions.jsx index ab38532a6..7322f1150 100644 --- a/webapp/action_creators/global_actions.jsx +++ b/webapp/action_creators/global_actions.jsx @@ -264,6 +264,15 @@ export function newLocalizationSelected(locale) { } } +export function loadBrowserLocale() { + let locale = (navigator.languages && navigator.languages.length > 0 ? navigator.languages[0] : + (navigator.language || navigator.userLanguage)).split('-')[0]; + if (!I18n.getLanguages()[locale]) { + locale = 'en'; + } + return newLocalizationSelected(locale); +} + export function viewLoggedIn() { AsyncClient.getChannels(); AsyncClient.getChannelExtraInfo(); diff --git a/webapp/action_creators/websocket_actions.jsx b/webapp/action_creators/websocket_actions.jsx index 009bb9e96..bb46db149 100644 --- a/webapp/action_creators/websocket_actions.jsx +++ b/webapp/action_creators/websocket_actions.jsx @@ -7,6 +7,7 @@ import PostStore from 'stores/post_store.jsx'; import ChannelStore from 'stores/channel_store.jsx'; import BrowserStore from 'stores/browser_store.jsx'; import ErrorStore from 'stores/error_store.jsx'; +import NotificationStore from 'stores/notification_store.jsx'; //eslint-disable-line no-unused-vars import * as Utils from 'utils/utils.jsx'; import * as AsyncClient from 'utils/async_client.jsx'; diff --git a/webapp/components/claim/components/email_to_ldap.jsx b/webapp/components/claim/components/email_to_ldap.jsx index 1f51f9cd5..1ceb42a27 100644 --- a/webapp/components/claim/components/email_to_ldap.jsx +++ b/webapp/components/claim/components/email_to_ldap.jsx @@ -21,7 +21,7 @@ export default class EmailToLDAP extends React.Component { e.preventDefault(); var state = {}; - const password = ReactDOM.findDOMNode(this.refs.password).value.trim(); + const password = ReactDOM.findDOMNode(this.refs.emailpassword).value.trim(); if (!password) { state.error = Utils.localizeMessage('claim.email_to_ldap.pwdError', 'Please enter your password.'); this.setState(state); @@ -105,12 +105,18 @@ export default class EmailToLDAP extends React.Component { }} /> </p> + <input + type='text' + style={{display: 'none'}} + name='fakeusernameremembered' + /> <div className={formClass}> <input type='password' className='form-control' - name='password' - ref='password' + name='emailPassword' + ref='emailpassword' + autoComplete='off' placeholder={Utils.localizeMessage('claim.email_to_ldap.pwd', 'Password')} spellCheck='false' /> @@ -131,6 +137,7 @@ export default class EmailToLDAP extends React.Component { className='form-control' name='ldapId' ref='ldapid' + autoComplete='off' placeholder={Utils.localizeMessage('claim.email_to_ldap.ldapId', 'LDAP ID')} spellCheck='false' /> @@ -141,6 +148,7 @@ export default class EmailToLDAP extends React.Component { className='form-control' name='ldapPassword' ref='ldappassword' + autoComplete='off' placeholder={Utils.localizeMessage('claim.email_to_ldap.ldapPwd', 'LDAP Password')} spellCheck='false' /> diff --git a/webapp/components/login.jsx b/webapp/components/login.jsx index e8180895d..ff9cd74a8 100644 --- a/webapp/components/login.jsx +++ b/webapp/components/login.jsx @@ -60,10 +60,10 @@ export default class Login extends React.Component { let loginMessage = []; if (global.window.mm_config.EnableSignUpWithGitLab === 'true') { loginMessage.push( - <Link + <a className='btn btn-custom-login gitlab' key='gitlab' - to={'/api/v1/oauth/gitlab/login?team=' + encodeURIComponent(teamName)} + href={'/api/v1/oauth/gitlab/login?team=' + encodeURIComponent(teamName)} > <span className='icon'/> <span> @@ -72,16 +72,16 @@ export default class Login extends React.Component { defaultMessage='with GitLab' /> </span> - </Link> + </a> ); } if (global.window.mm_config.EnableSignUpWithGoogle === 'true') { loginMessage.push( - <Link + <a className='btn btn-custom-login google' key='google' - to={'/api/v1/oauth/google/login?team=' + encodeURIComponent(teamName)} + href={'/api/v1/oauth/google/login?team=' + encodeURIComponent(teamName)} > <span className='icon'/> <span> @@ -90,7 +90,7 @@ export default class Login extends React.Component { defaultMessage='with Google Apps' /> </span> - </Link> + </a> ); } diff --git a/webapp/components/root.jsx b/webapp/components/root.jsx index 9963bc5dd..3b85b23fd 100644 --- a/webapp/components/root.jsx +++ b/webapp/components/root.jsx @@ -69,7 +69,7 @@ export default class Root extends React.Component { FastClick.attach(document.body); // Get our localizaiton - GlobalActions.newLocalizationSelected('en'); + GlobalActions.loadBrowserLocale(); } componentWillUnmount() { LocalizationStore.removeChangeListener(this.localizationChanged); diff --git a/webapp/components/signup_user_complete.jsx b/webapp/components/signup_user_complete.jsx index 5460daf29..78ab1bd8c 100644 --- a/webapp/components/signup_user_complete.jsx +++ b/webapp/components/signup_user_complete.jsx @@ -317,10 +317,10 @@ class SignupUserComplete extends React.Component { var signupMessage = []; if (global.window.mm_config.EnableSignUpWithGitLab === 'true') { signupMessage.push( - <Link + <a className='btn btn-custom-login gitlab' key='gitlab' - to={'/api/v1/oauth/gitlab/signup' + window.location.search + '&team=' + encodeURIComponent(this.state.teamName)} + href={'/api/v1/oauth/gitlab/signup' + window.location.search + '&team=' + encodeURIComponent(this.state.teamName)} > <span className='icon'/> <span> @@ -329,16 +329,16 @@ class SignupUserComplete extends React.Component { defaultMessage='with GitLab' /> </span> - </Link> + </a> ); } if (global.window.mm_config.EnableSignUpWithGoogle === 'true') { signupMessage.push( - <Link + <a className='btn btn-custom-login google' key='google' - to={'/api/v1/oauth/google/signup' + window.location.search + '&team=' + encodeURIComponent(this.state.teamName)} + href={'/api/v1/oauth/google/signup' + window.location.search + '&team=' + encodeURIComponent(this.state.teamName)} > <span className='icon'/> <span> @@ -347,7 +347,7 @@ class SignupUserComplete extends React.Component { defaultMessage='with Google' /> </span> - </Link> + </a> ); } diff --git a/webapp/components/suggestion/search_suggestion_list.jsx b/webapp/components/suggestion/search_suggestion_list.jsx index b15cc4243..57aaee8ff 100644 --- a/webapp/components/suggestion/search_suggestion_list.jsx +++ b/webapp/components/suggestion/search_suggestion_list.jsx @@ -2,6 +2,7 @@ // See License.txt for license information. import $ from 'jquery'; +import React from 'react'; import ReactDOM from 'react-dom'; import Constants from 'utils/constants.jsx'; import SuggestionList from './suggestion_list.jsx'; diff --git a/webapp/components/team_signup_with_sso.jsx b/webapp/components/team_signup_with_sso.jsx index 9a46b2d6b..78396eea8 100644 --- a/webapp/components/team_signup_with_sso.jsx +++ b/webapp/components/team_signup_with_sso.jsx @@ -64,7 +64,7 @@ class SSOSignUpPage extends React.Component { this.props.service, (data) => { if (data.follow_link) { - browserHistory.push(data.follow_link); + window.location.href = data.follow_link; } else { browserHistory.push('/' + team.name + '/channels/town-square'); } diff --git a/webapp/components/user_settings/user_settings_modal.jsx b/webapp/components/user_settings/user_settings_modal.jsx index d1c1f0fe2..b71547baf 100644 --- a/webapp/components/user_settings/user_settings_modal.jsx +++ b/webapp/components/user_settings/user_settings_modal.jsx @@ -9,7 +9,6 @@ import SettingsSidebar from '../settings_sidebar.jsx'; import UserStore from 'stores/user_store.jsx'; import * as Utils from 'utils/utils.jsx'; -import Constants from 'utils/constants.jsx'; import {Modal} from 'react-bootstrap'; @@ -113,7 +112,6 @@ class UserSettingsModal extends React.Component { return; } - this.resetTheme(); this.deactivateTab(); this.props.onModalDismissed(); return; @@ -220,22 +218,10 @@ class UserSettingsModal extends React.Component { if (!skipConfirm && this.requireConfirm) { this.showConfirmModal(() => this.updateSection(section, true)); } else { - if (this.state.active_section === 'theme' && section !== 'theme') { - this.resetTheme(); - } this.setState({active_section: section}); } } - resetTheme() { - const user = UserStore.getCurrentUser(); - if (user.theme_props == null) { - Utils.applyTheme(Constants.THEMES.default); - } else { - Utils.applyTheme(user.theme_props); - } - } - render() { const {formatMessage} = this.props.intl; if (this.state.currentUser == null) { diff --git a/webapp/components/user_settings/user_settings_security.jsx b/webapp/components/user_settings/user_settings_security.jsx index 283d2c425..f937844ec 100644 --- a/webapp/components/user_settings/user_settings_security.jsx +++ b/webapp/components/user_settings/user_settings_security.jsx @@ -416,6 +416,7 @@ class SecurityTab extends React.Component { let numMethods = 0; numMethods = global.window.mm_config.EnableSignUpWithGitLab === 'true' ? numMethods + 1 : numMethods; numMethods = global.window.mm_config.EnableSignUpWithGoogle === 'true' ? numMethods + 1 : numMethods; + numMethods = global.window.mm_config.EnableLdap === 'true' ? numMethods + 1 : numMethods; if (global.window.mm_config.EnableSignUpWithEmail && numMethods > 0) { signInSection = this.createSignInSection(); diff --git a/webapp/components/user_settings/user_settings_theme.jsx b/webapp/components/user_settings/user_settings_theme.jsx index 3414fe2e2..14991037d 100644 --- a/webapp/components/user_settings/user_settings_theme.jsx +++ b/webapp/components/user_settings/user_settings_theme.jsx @@ -40,7 +40,6 @@ export default class ThemeSetting extends React.Component { this.onChange = this.onChange.bind(this); this.submitTheme = this.submitTheme.bind(this); this.updateTheme = this.updateTheme.bind(this); - this.deactivate = this.deactivate.bind(this); this.resetFields = this.resetFields.bind(this); this.handleImportModal = this.handleImportModal.bind(this); @@ -62,12 +61,17 @@ export default class ThemeSetting extends React.Component { } } componentWillReceiveProps(nextProps) { - if (!this.props.selected && nextProps.selected) { + if (this.props.selected && !nextProps.selected) { this.resetFields(); } } componentWillUnmount() { UserStore.removeChangeListener(this.onChange); + + if (this.props.selected) { + const state = this.getStateFromStores(); + Utils.applyTheme(state.theme); + } } getStateFromStores() { const user = UserStore.getCurrentUser(); @@ -147,11 +151,6 @@ export default class ThemeSetting extends React.Component { updateType(type) { this.setState({type}); } - deactivate() { - const state = this.getStateFromStores(); - - Utils.applyTheme(state.theme); - } resetFields() { const state = this.getStateFromStores(); state.serverError = null; diff --git a/webapp/root.jsx b/webapp/root.jsx index 2318c0682..2fce25532 100644 --- a/webapp/root.jsx +++ b/webapp/root.jsx @@ -119,7 +119,7 @@ function preRenderSetup(callwhendone) { if (global.Intl) { afterIntl(); } else { - I18n.safarifix(afterIntl); + I18n.safariFix(afterIntl); } } diff --git a/webapp/stores/notificaiton_store.jsx b/webapp/stores/notification_store.jsx index 70caffeb6..70caffeb6 100644 --- a/webapp/stores/notificaiton_store.jsx +++ b/webapp/stores/notification_store.jsx |