summaryrefslogtreecommitdiffstats
path: root/webapp/components/claim
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/claim')
-rw-r--r--webapp/components/claim/claim_controller.jsx61
-rw-r--r--webapp/components/claim/components/email_to_ldap.jsx273
-rw-r--r--webapp/components/claim/components/email_to_oauth.jsx178
-rw-r--r--webapp/components/claim/components/ldap_to_email.jsx251
-rw-r--r--webapp/components/claim/components/oauth_to_email.jsx147
5 files changed, 0 insertions, 910 deletions
diff --git a/webapp/components/claim/claim_controller.jsx b/webapp/components/claim/claim_controller.jsx
deleted file mode 100644
index ccf4fb64b..000000000
--- a/webapp/components/claim/claim_controller.jsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import PropTypes from 'prop-types';
-
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import React from 'react';
-import {FormattedMessage} from 'react-intl';
-import {Link} from 'react-router/es6';
-
-import logoImage from 'images/logo.png';
-
-export default class ClaimController extends React.Component {
- constructor(props) {
- super(props);
-
- this.state = {};
- }
- componentWillMount() {
- this.setState({
- email: this.props.location.query.email,
- newType: this.props.location.query.new_type,
- oldType: this.props.location.query.old_type
- });
- }
- render() {
- return (
- <div>
- <div className='signup-header'>
- <Link to='/'>
- <span className='fa fa-chevron-left'/>
- <FormattedMessage
- id='web.header.back'
- />
- </Link>
- </div>
- <div className='col-sm-12'>
- <div className='signup-team__container'>
- <img
- className='signup-team-logo'
- src={logoImage}
- />
- <div id='claim'>
- {React.cloneElement(this.props.children, {
- currentType: this.state.oldType,
- newType: this.state.newType,
- email: this.state.email
- })}
- </div>
- </div>
- </div>
- </div>
- );
- }
-}
-
-ClaimController.defaultProps = {
-};
-ClaimController.propTypes = {
- location: PropTypes.object.isRequired,
- children: PropTypes.node
-};
diff --git a/webapp/components/claim/components/email_to_ldap.jsx b/webapp/components/claim/components/email_to_ldap.jsx
deleted file mode 100644
index 2054231ce..000000000
--- a/webapp/components/claim/components/email_to_ldap.jsx
+++ /dev/null
@@ -1,273 +0,0 @@
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import LoginMfa from 'components/login/components/login_mfa.jsx';
-
-import * as Utils from 'utils/utils.jsx';
-
-import {checkMfa} from 'actions/user_actions.jsx';
-import {emailToLdap} from 'actions/admin_actions.jsx';
-
-import PropTypes from 'prop-types';
-
-import React from 'react';
-import {FormattedMessage} from 'react-intl';
-
-export default class EmailToLDAP extends React.Component {
- constructor(props) {
- super(props);
-
- this.submit = this.submit.bind(this);
- this.preSubmit = this.preSubmit.bind(this);
-
- this.state = {
- passwordError: '',
- ldapError: '',
- ldapPasswordError: '',
- serverError: '',
- showMfa: false
- };
- }
-
- preSubmit(e) {
- e.preventDefault();
-
- var state = {
- passwordError: '',
- ldapError: '',
- ldapPasswordError: '',
- serverError: ''
- };
-
- const password = this.refs.emailpassword.value;
- if (!password) {
- state.passwordError = Utils.localizeMessage('claim.email_to_ldap.pwdError', 'Please enter your password.');
- this.setState(state);
- return;
- }
-
- const ldapId = this.refs.ldapid.value.trim();
- if (!ldapId) {
- state.ldapError = Utils.localizeMessage('claim.email_to_ldap.ldapIdError', 'Please enter your AD/LDAP ID.');
- this.setState(state);
- return;
- }
-
- const ldapPassword = this.refs.ldappassword.value;
- if (!ldapPassword) {
- state.ldapPasswordError = Utils.localizeMessage('claim.email_to_ldap.ldapPasswordError', 'Please enter your AD/LDAP password.');
- this.setState(state);
- return;
- }
-
- state.password = password;
- state.ldapId = ldapId;
- state.ldapPassword = ldapPassword;
- this.setState(state);
-
- checkMfa(
- this.props.email,
- (requiresMfa) => {
- if (requiresMfa) {
- this.setState({showMfa: true});
- } else {
- this.submit(this.props.email, password, '', ldapId, ldapPassword);
- }
- },
- (err) => {
- this.setState({error: err.message});
- }
- );
- }
-
- submit(loginId, password, token, ldapId, ldapPassword) {
- emailToLdap(
- loginId,
- password,
- token,
- ldapId || this.state.ldapId,
- ldapPassword || this.state.ldapPassword,
- (data) => {
- if (data.follow_link) {
- window.location.href = data.follow_link;
- }
- },
- (err) => {
- switch (err.id) {
- case 'ent.ldap.do_login.user_not_registered.app_error':
- case 'ent.ldap.do_login.user_filtered.app_error':
- case 'ent.ldap.do_login.matched_to_many_users.app_error':
- this.setState({ldapError: err.message, showMfa: false});
- break;
- case 'ent.ldap.do_login.invalid_password.app_error':
- this.setState({ldapPasswordError: err.message, showMfa: false});
- break;
- case 'api.user.check_user_password.invalid.app_error':
- this.setState({passwordError: err.message, showMfa: false});
- break;
- default:
- this.setState({serverError: err.message, showMfa: false});
- }
- }
- );
- }
-
- render() {
- let serverError = null;
- let formClass = 'form-group';
- if (this.state.serverError) {
- serverError = <div className='form-group has-error'><label className='control-label'>{this.state.serverError}</label></div>;
- formClass += ' has-error';
- }
-
- let passwordError = null;
- let passwordClass = 'form-group';
- if (this.state.passwordError) {
- passwordError = <div className='form-group has-error'><label className='control-label'>{this.state.passwordError}</label></div>;
- passwordClass += ' has-error';
- }
-
- let ldapError = null;
- let ldapClass = 'form-group';
- if (this.state.ldapError) {
- ldapError = <div className='form-group has-error'><label className='control-label'>{this.state.ldapError}</label></div>;
- ldapClass += ' has-error';
- }
-
- let ldapPasswordError = null;
- let ldapPasswordClass = 'form-group';
- if (this.state.ldapPasswordError) {
- ldapPasswordError = <div className='form-group has-error'><label className='control-label'>{this.state.ldapPasswordError}</label></div>;
- ldapPasswordClass += ' has-error';
- }
-
- let loginPlaceholder;
- if (global.window.mm_config.LdapLoginFieldName) {
- loginPlaceholder = global.window.mm_config.LdapLoginFieldName;
- } else {
- loginPlaceholder = Utils.localizeMessage('claim.email_to_ldap.ldapId', 'AD/LDAP ID');
- }
-
- let passwordPlaceholder;
- if (global.window.mm_config.LdapPasswordFieldName) {
- passwordPlaceholder = global.window.mm_config.LdapPasswordFieldName;
- } else {
- passwordPlaceholder = Utils.localizeMessage('claim.email_to_ldap.ldapPwd', 'AD/LDAP Password');
- }
-
- let content;
- if (this.state.showMfa) {
- content = (
- <LoginMfa
- loginId={this.props.email}
- password={this.state.password}
- submit={this.submit}
- />
- );
- } else {
- content = (
- <form
- onSubmit={this.preSubmit}
- className={formClass}
- >
- <p>
- <FormattedMessage
- id='claim.email_to_ldap.ssoType'
- defaultMessage='Upon claiming your account, you will only be able to login with AD/LDAP'
- />
- </p>
- <p>
- <FormattedMessage
- id='claim.email_to_ldap.ssoNote'
- defaultMessage='You must already have a valid AD/LDAP account'
- />
- </p>
- <p>
- <FormattedMessage
- id='claim.email_to_ldap.enterPwd'
- defaultMessage='Enter the password for your {site} email account'
- values={{
- site: global.window.mm_config.SiteName
- }}
- />
- </p>
- <input
- type='text'
- style={{display: 'none'}}
- name='fakeusernameremembered'
- />
- <div className={passwordClass}>
- <input
- type='password'
- className='form-control'
- name='emailPassword'
- ref='emailpassword'
- autoComplete='off'
- placeholder={Utils.localizeMessage('claim.email_to_ldap.pwd', 'Password')}
- spellCheck='false'
- />
- </div>
- {passwordError}
- <p>
- <FormattedMessage
- id='claim.email_to_ldap.enterLdapPwd'
- defaultMessage='Enter the ID and password for your AD/LDAP account'
- />
- </p>
- <div className={ldapClass}>
- <input
- type='text'
- className='form-control'
- name='ldapId'
- ref='ldapid'
- autoComplete='off'
- placeholder={loginPlaceholder}
- spellCheck='false'
- />
- </div>
- {ldapError}
- <div className={ldapPasswordClass}>
- <input
- type='password'
- className='form-control'
- name='ldapPassword'
- ref='ldappassword'
- autoComplete='off'
- placeholder={passwordPlaceholder}
- spellCheck='false'
- />
- </div>
- {ldapPasswordError}
- <button
- type='submit'
- className='btn btn-primary'
- >
- <FormattedMessage
- id='claim.email_to_ldap.switchTo'
- defaultMessage='Switch account to AD/LDAP'
- />
- </button>
- {serverError}
- </form>
- );
- }
-
- return (
- <div>
- <h3>
- <FormattedMessage
- id='claim.email_to_ldap.title'
- defaultMessage='Switch Email/Password Account to AD/LDAP'
- />
- </h3>
- {content}
- </div>
- );
- }
-}
-
-EmailToLDAP.defaultProps = {
-};
-EmailToLDAP.propTypes = {
- email: PropTypes.string
-};
diff --git a/webapp/components/claim/components/email_to_oauth.jsx b/webapp/components/claim/components/email_to_oauth.jsx
deleted file mode 100644
index 27504e6f3..000000000
--- a/webapp/components/claim/components/email_to_oauth.jsx
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import LoginMfa from 'components/login/components/login_mfa.jsx';
-
-import * as Utils from 'utils/utils.jsx';
-import Constants from 'utils/constants.jsx';
-
-import {checkMfa} from 'actions/user_actions.jsx';
-import {emailToOAuth} from 'actions/admin_actions.jsx';
-
-import PropTypes from 'prop-types';
-
-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.preSubmit = this.preSubmit.bind(this);
-
- this.state = {showMfa: false, password: ''};
- }
-
- preSubmit(e) {
- e.preventDefault();
- var state = {};
-
- var password = ReactDOM.findDOMNode(this.refs.password).value;
- if (!password) {
- state.error = Utils.localizeMessage('claim.email_to_oauth.pwdError', 'Please enter your password.');
- this.setState(state);
- return;
- }
-
- this.setState({password});
-
- state.error = null;
- this.setState(state);
-
- checkMfa(
- this.props.email,
- (requiresMfa) => {
- if (requiresMfa) {
- this.setState({showMfa: true});
- } else {
- this.submit(this.props.email, password, '');
- }
- },
- (err) => {
- this.setState({error: err.message});
- }
- );
- }
-
- submit(loginId, password, token) {
- emailToOAuth(
- loginId,
- password,
- token,
- this.props.newType,
- (data) => {
- if (data.follow_link) {
- window.location.href = data.follow_link;
- }
- },
- (err) => {
- this.setState({error: err.message, showMfa: false});
- }
- );
- }
-
- 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 type = (this.props.newType === Constants.SAML_SERVICE ? Constants.SAML_SERVICE.toUpperCase() : Utils.toTitleCase(this.props.newType));
- const uiType = `${type} SSO`;
-
- let content;
- if (this.state.showMfa) {
- content = (
- <LoginMfa
- loginId={this.props.email}
- password={this.state.password}
- submit={this.submit}
- />
- );
- } else {
- content = (
- <form onSubmit={this.preSubmit}>
- <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
- }}
- />
- </p>
- <p>
- <FormattedMessage
- id='claim.email_to_oauth.ssoNote'
- defaultMessage='You must already have a valid {type} account'
- values={{
- type
- }}
- />
- </p>
- <p>
- <FormattedMessage
- id='claim.email_to_oauth.enterPwd'
- defaultMessage='Enter the password for your {site} account'
- values={{
- 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>
- );
- }
-
- return (
- <div>
- <h3>
- <FormattedMessage
- id='claim.email_to_oauth.title'
- defaultMessage='Switch Email/Password Account to {uiType}'
- values={{
- uiType
- }}
- />
- </h3>
- {content}
- </div>
- );
- }
-}
-
-EmailToOAuth.defaultProps = {
-};
-EmailToOAuth.propTypes = {
- newType: PropTypes.string,
- email: PropTypes.string
-};
diff --git a/webapp/components/claim/components/ldap_to_email.jsx b/webapp/components/claim/components/ldap_to_email.jsx
deleted file mode 100644
index d5f6fbbb2..000000000
--- a/webapp/components/claim/components/ldap_to_email.jsx
+++ /dev/null
@@ -1,251 +0,0 @@
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import LoginMfa from 'components/login/components/login_mfa.jsx';
-
-import * as Utils from 'utils/utils.jsx';
-
-import {checkMfa, switchFromLdapToEmail} from 'actions/user_actions.jsx';
-
-import PropTypes from 'prop-types';
-
-import React from 'react';
-import {FormattedMessage} from 'react-intl';
-
-export default class LDAPToEmail extends React.Component {
- constructor(props) {
- super(props);
-
- this.submit = this.submit.bind(this);
- this.preSubmit = this.preSubmit.bind(this);
-
- this.state = {
- passwordError: '',
- confirmError: '',
- ldapPasswordError: '',
- serverError: ''
- };
- }
-
- preSubmit(e) {
- e.preventDefault();
-
- var state = {
- passwordError: '',
- confirmError: '',
- ldapPasswordError: '',
- serverError: ''
- };
-
- const ldapPassword = this.refs.ldappassword.value;
- if (!ldapPassword) {
- state.ldapPasswordError = Utils.localizeMessage('claim.ldap_to_email.ldapPasswordError', 'Please enter your AD/LDAP password.');
- this.setState(state);
- return;
- }
-
- const password = this.refs.password.value;
- if (!password) {
- state.passwordError = Utils.localizeMessage('claim.ldap_to_email.pwdError', 'Please enter your password.');
- this.setState(state);
- return;
- }
-
- const passwordErr = Utils.isValidPassword(password);
- if (passwordErr !== '') {
- this.setState({
- passwordError: passwordErr
- });
- return;
- }
-
- const confirmPassword = this.refs.passwordconfirm.value;
- if (!confirmPassword || password !== confirmPassword) {
- state.confirmError = Utils.localizeMessage('claim.ldap_to_email.pwdNotMatch', 'Passwords do not match.');
- this.setState(state);
- return;
- }
-
- state.password = password;
- state.ldapPassword = ldapPassword;
- this.setState(state);
-
- checkMfa(
- this.props.email,
- (requiresMfa) => {
- if (requiresMfa) {
- this.setState({showMfa: true});
- } else {
- this.submit(this.props.email, password, '', ldapPassword);
- }
- },
- (err) => {
- this.setState({error: err.message});
- }
- );
- }
-
- submit(loginId, password, token, ldapPassword) {
- switchFromLdapToEmail(
- this.props.email,
- password,
- token,
- ldapPassword || this.state.ldapPassword,
- null,
- (err) => {
- if (err.id.startsWith('model.user.is_valid.pwd')) {
- this.setState({passwordError: err.message, showMfa: false});
- } else {
- switch (err.id) {
- case 'ent.ldap.do_login.invalid_password.app_error':
- this.setState({ldapPasswordError: err.message, showMfa: false});
- break;
- default:
- this.setState({serverError: err.message, showMfa: false});
- }
- }
- }
- );
- }
-
- render() {
- let serverError = null;
- let formClass = 'form-group';
- if (this.state.serverError) {
- serverError = <div className='form-group has-error'><label className='control-label'>{this.state.serverError}</label></div>;
- formClass += ' has-error';
- }
-
- let passwordError = null;
- let passwordClass = 'form-group';
- if (this.state.passwordError) {
- passwordError = <div className='form-group has-error'><label className='control-label'>{this.state.passwordError}</label></div>;
- passwordClass += ' has-error';
- }
-
- let ldapPasswordError = null;
- let ldapPasswordClass = 'form-group';
- if (this.state.ldapPasswordError) {
- ldapPasswordError = <div className='form-group has-error'><label className='control-label'>{this.state.ldapPasswordError}</label></div>;
- ldapPasswordClass += ' has-error';
- }
-
- let confirmError = null;
- let confimClass = 'form-group';
- if (this.state.confirmError) {
- confirmError = <div className='form-group has-error'><label className='control-label'>{this.state.confirmError}</label></div>;
- confimClass += ' has-error';
- }
-
- let passwordPlaceholder;
- if (global.window.mm_config.LdapPasswordFieldName) {
- passwordPlaceholder = global.window.mm_config.LdapPasswordFieldName;
- } else {
- passwordPlaceholder = Utils.localizeMessage('claim.ldap_to_email.ldapPwd', 'AD/LDAP Password');
- }
-
- let content;
- if (this.state.showMfa) {
- content = (
- <LoginMfa
- loginId={this.props.email}
- password={this.state.password}
- submit={this.submit}
- />
- );
- } else {
- content = (
- <form
- onSubmit={this.preSubmit}
- className={formClass}
- >
- <p>
- <FormattedMessage
- id='claim.ldap_to_email.email'
- defaultMessage='After switching your authentication method, you will use {email} to login. Your AD/LDAP credentials will no longer allow access to Mattermost.'
- values={{
- email: this.props.email
- }}
- />
- </p>
- <p>
- <FormattedMessage
- id='claim.ldap_to_email.enterLdapPwd'
- defaultMessage='{ldapPassword}:'
- values={{
- ldapPassword: passwordPlaceholder
- }}
- />
- </p>
- <div className={ldapPasswordClass}>
- <input
- type='password'
- className='form-control'
- name='ldapPassword'
- ref='ldappassword'
- placeholder={passwordPlaceholder}
- spellCheck='false'
- />
- </div>
- {ldapPasswordError}
- <p>
- <FormattedMessage
- id='claim.ldap_to_email.enterPwd'
- defaultMessage='New email login password:'
- />
- </p>
- <div className={passwordClass}>
- <input
- type='password'
- className='form-control'
- name='password'
- ref='password'
- placeholder={Utils.localizeMessage('claim.ldap_to_email.pwd', 'Password')}
- spellCheck='false'
- />
- </div>
- {passwordError}
- <div className={confimClass}>
- <input
- type='password'
- className='form-control'
- name='passwordconfirm'
- ref='passwordconfirm'
- placeholder={Utils.localizeMessage('claim.ldap_to_email.confirm', 'Confirm Password')}
- spellCheck='false'
- />
- </div>
- {confirmError}
- <button
- type='submit'
- className='btn btn-primary'
- >
- <FormattedMessage
- id='claim.ldap_to_email.switchTo'
- defaultMessage='Switch account to email/password'
- />
- </button>
- {serverError}
- </form>
- );
- }
-
- return (
- <div>
- <h3>
- <FormattedMessage
- id='claim.ldap_to_email.title'
- defaultMessage='Switch AD/LDAP Account to Email/Password'
- />
- </h3>
- {content}
- </div>
- );
- }
-}
-
-LDAPToEmail.defaultProps = {
-};
-LDAPToEmail.propTypes = {
- email: PropTypes.string
-};
diff --git a/webapp/components/claim/components/oauth_to_email.jsx b/webapp/components/claim/components/oauth_to_email.jsx
deleted file mode 100644
index 9944b3306..000000000
--- a/webapp/components/claim/components/oauth_to_email.jsx
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import * as Utils from 'utils/utils.jsx';
-import Constants from 'utils/constants.jsx';
-
-import PropTypes from 'prop-types';
-
-import React from 'react';
-import ReactDOM from 'react-dom';
-import {FormattedMessage} from 'react-intl';
-
-import {oauthToEmail} from 'actions/admin_actions.jsx';
-
-export default class OAuthToEmail extends React.Component {
- constructor(props) {
- super(props);
-
- this.submit = this.submit.bind(this);
-
- this.state = {};
- }
-
- submit(e) {
- e.preventDefault();
- const state = {};
-
- const password = ReactDOM.findDOMNode(this.refs.password).value;
- if (!password) {
- state.error = Utils.localizeMessage('claim.oauth_to_email.enterPwd', 'Please enter a password.');
- this.setState(state);
- return;
- }
-
- const passwordErr = Utils.isValidPassword(password);
- if (passwordErr !== '') {
- this.setState({
- error: passwordErr
- });
- return;
- }
-
- const confirmPassword = ReactDOM.findDOMNode(this.refs.passwordconfirm).value;
- if (!confirmPassword || password !== confirmPassword) {
- state.error = Utils.localizeMessage('claim.oauth_to_email.pwdNotMatch', 'Password do not match.');
- this.setState(state);
- return;
- }
-
- state.error = null;
- this.setState(state);
-
- oauthToEmail(
- this.props.currentType,
- this.props.email,
- password,
- null,
- (err) => {
- this.setState({error: err.message});
- }
- );
- }
- 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 = `${(this.props.currentType === Constants.SAML_SERVICE ? Constants.SAML_SERVICE.toUpperCase() : Utils.toTitleCase(this.props.currentType))} SSO`;
-
- return (
- <div>
- <h3>
- <FormattedMessage
- id='claim.oauth_to_email.title'
- defaultMessage='Switch {type} Account to Email'
- values={{
- type: uiType
- }}
- />
- </h3>
- <form onSubmit={this.submit}>
- <p>
- <FormattedMessage
- id='claim.oauth_to_email.description'
- defaultMessage='Upon changing your account type, you will only be able to login with your email and password.'
- />
- </p>
- <p>
- <FormattedMessage
- id='claim.oauth_to_email.enterNewPwd'
- defaultMessage='Enter a new password for your {site} email account'
- values={{
- site: global.window.mm_config.SiteName
- }}
- />
- </p>
- <div className={formClass}>
- <input
- type='password'
- className='form-control'
- name='password'
- ref='password'
- placeholder={Utils.localizeMessage('claim.oauth_to_email.newPwd', 'New Password')}
- spellCheck='false'
- />
- </div>
- <div className={formClass}>
- <input
- type='password'
- className='form-control'
- name='passwordconfirm'
- ref='passwordconfirm'
- placeholder={Utils.localizeMessage('claim.oauth_to_email.confirm', 'Confirm Password')}
- spellCheck='false'
- />
- </div>
- {error}
- <button
- type='submit'
- className='btn btn-primary'
- >
- <FormattedMessage
- id='claim.oauth_to_email.switchTo'
- defaultMessage='Switch {type} to email and password'
- values={{
- type: uiType
- }}
- />
- </button>
- </form>
- </div>
- );
- }
-}
-
-OAuthToEmail.defaultProps = {
-};
-OAuthToEmail.propTypes = {
- currentType: PropTypes.string,
- email: PropTypes.string
-};