summaryrefslogtreecommitdiffstats
path: root/webapp/components/claim/components/email_to_oauth.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/claim/components/email_to_oauth.jsx')
-rw-r--r--webapp/components/claim/components/email_to_oauth.jsx139
1 files changed, 139 insertions, 0 deletions
diff --git a/webapp/components/claim/components/email_to_oauth.jsx b/webapp/components/claim/components/email_to_oauth.jsx
new file mode 100644
index 000000000..f3e370a4a
--- /dev/null
+++ b/webapp/components/claim/components/email_to_oauth.jsx
@@ -0,0 +1,139 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import * as Utils from 'utils/utils.jsx';
+import * as Client from 'utils/client.jsx';
+
+import React from 'react';
+import ReactDOM from 'react-dom';
+import {FormattedMessage} from 'react-intl';
+
+export default class EmailToOAuth extends React.Component {
+ constructor(props) {
+ super(props);
+
+ this.submit = this.submit.bind(this);
+
+ this.state = {};
+ }
+ submit(e) {
+ e.preventDefault();
+ var state = {};
+
+ var password = ReactDOM.findDOMNode(this.refs.password).value.trim();
+ if (!password) {
+ state.error = Utils.localizeMessage('claim.email_to_oauth.pwdError', 'Please enter your password.');
+ this.setState(state);
+ return;
+ }
+
+ state.error = null;
+ this.setState(state);
+
+ var postData = {};
+ postData.password = password;
+ postData.email = this.props.email;
+ postData.team_name = this.props.teamName;
+ postData.service = this.props.newType;
+
+ Client.emailToOAuth(postData,
+ (data) => {
+ if (data.follow_link) {
+ window.location.href = data.follow_link;
+ }
+ },
+ (error) => {
+ this.setState({error});
+ }
+ );
+ }
+ render() {
+ var error = null;
+ if (this.state.error) {
+ error = <div className='form-group has-error'><label className='control-label'>{this.state.error}</label></div>;
+ }
+
+ var formClass = 'form-group';
+ if (error) {
+ formClass += ' has-error';
+ }
+
+ const uiType = Utils.toTitleCase(this.props.newType) + ' SSO';
+
+ return (
+ <div>
+ <h3>
+ <FormattedMessage
+ id='claim.email_to_oauth.title'
+ defaultMessage='Switch Email/Password Account to {uiType}'
+ values={{
+ uiType
+ }}
+ />
+ </h3>
+ <form onSubmit={this.submit}>
+ <p>
+ <FormattedMessage
+ id='claim.email_to_oauth.ssoType'
+ defaultMessage='Upon claiming your account, you will only be able to login with {type} SSO'
+ values={{
+ type: Utils.toTitleCase(this.props.newType)
+ }}
+ />
+ </p>
+ <p>
+ <FormattedMessage
+ id='claim.email_to_oauth.ssoNote'
+ defaultMessage='You must already have a valid {type} account'
+ values={{
+ type: Utils.toTitleCase(this.props.newType)
+ }}
+ />
+ </p>
+ <p>
+ <FormattedMessage
+ id='claim.email_to_oauth.enterPwd'
+ defaultMessage='Enter the password for your {team} {site} account'
+ values={{
+ team: this.props.teamDisplayName,
+ site: global.window.mm_config.SiteName
+ }}
+ />
+ </p>
+ <div className={formClass}>
+ <input
+ type='password'
+ className='form-control'
+ name='password'
+ ref='password'
+ placeholder={Utils.localizeMessage('claim.email_to_oauth.pwd', 'Password')}
+ spellCheck='false'
+ />
+ </div>
+ {error}
+ <button
+ type='submit'
+ className='btn btn-primary'
+ >
+ <FormattedMessage
+ id='claim.email_to_oauth.switchTo'
+ defaultMessage='Switch account to {uiType}'
+ values={{
+ uiType
+ }}
+ />
+ </button>
+ </form>
+ </div>
+ );
+ }
+}
+
+EmailToOAuth.defaultProps = {
+};
+EmailToOAuth.propTypes = {
+ newType: React.PropTypes.string,
+ email: React.PropTypes.string,
+ teamName: React.PropTypes.string,
+ teamDisplayName: React.PropTypes.string
+};