2017-09-09 19:52:19 +05:30
|
|
|
// @flow
|
|
|
|
import React, { Component } from 'react';
|
2019-01-28 00:42:58 +05:30
|
|
|
import PropTypes from 'prop-types';
|
2017-09-09 19:52:19 +05:30
|
|
|
|
|
|
|
import logger from 'services/logger';
|
2019-01-28 00:42:58 +05:30
|
|
|
import { disable as disableMFA } from 'services/api/mfa';
|
2017-09-09 19:52:19 +05:30
|
|
|
|
|
|
|
import MfaDisableForm from './disableForm/MfaDisableForm';
|
|
|
|
import MfaStatus from './status/MfaStatus';
|
|
|
|
|
|
|
|
import type { FormModel } from 'components/ui/form';
|
|
|
|
|
|
|
|
export default class MfaDisable extends Component<{
|
|
|
|
onSubmit: (form: FormModel, sendData: () => Promise<*>) => Promise<*>,
|
|
|
|
onComplete: Function
|
|
|
|
}, {
|
|
|
|
showForm?: bool
|
|
|
|
}> {
|
2019-01-28 00:42:58 +05:30
|
|
|
static contextTypes = {
|
|
|
|
userId: PropTypes.number.isRequired,
|
|
|
|
};
|
|
|
|
|
2017-09-09 19:52:19 +05:30
|
|
|
state = {};
|
|
|
|
|
|
|
|
render() {
|
|
|
|
const { showForm } = this.state;
|
|
|
|
|
|
|
|
return showForm ? (
|
|
|
|
<MfaDisableForm onSubmit={this.onSubmit}/>
|
|
|
|
) : (
|
|
|
|
<MfaStatus onProceed={this.onProceed} />
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
onProceed = () => this.setState({showForm: true});
|
|
|
|
|
|
|
|
onSubmit = (form: FormModel) => {
|
|
|
|
return this.props.onSubmit(
|
|
|
|
form,
|
|
|
|
() => {
|
|
|
|
const data = form.serialize();
|
|
|
|
|
2019-01-28 00:42:58 +05:30
|
|
|
return disableMFA(this.context.userId, data);
|
2017-09-09 19:52:19 +05:30
|
|
|
}
|
|
|
|
)
|
|
|
|
.then(() => this.props.onComplete())
|
|
|
|
.catch((resp) => {
|
|
|
|
const {errors} = resp || {};
|
|
|
|
|
|
|
|
if (errors) {
|
|
|
|
return Promise.reject(errors);
|
|
|
|
}
|
|
|
|
|
|
|
|
logger.error('MFA: Unexpected disable form result', {
|
|
|
|
resp
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
}
|