mirror of
https://github.com/elyby/accounts-frontend.git
synced 2024-11-13 03:35:55 +05:30
59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import React from 'react';
|
|
import logger from 'app/services/logger';
|
|
import { disable as disableMFA } from 'app/services/api/mfa';
|
|
import { FormModel } from 'app/components/ui/form';
|
|
|
|
import Context from '../Context';
|
|
import MfaDisableForm from './disableForm/MfaDisableForm';
|
|
import MfaStatus from './status/MfaStatus';
|
|
|
|
export default class MfaDisable extends React.Component<
|
|
{
|
|
onSubmit: (form: FormModel, sendData: () => Promise<void>) => Promise<void>;
|
|
onComplete: () => void;
|
|
},
|
|
{
|
|
showForm: boolean;
|
|
}
|
|
> {
|
|
static contextType = Context;
|
|
/* TODO: use declare */ context: React.ContextType<typeof Context>;
|
|
|
|
state = {
|
|
showForm: false,
|
|
};
|
|
|
|
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 { totp } = form.serialize() as { totp: string };
|
|
|
|
return disableMFA(this.context.userId, totp);
|
|
})
|
|
.then(() => this.props.onComplete())
|
|
.catch(resp => {
|
|
const { errors } = resp || {};
|
|
|
|
if (errors) {
|
|
return Promise.reject(errors);
|
|
}
|
|
|
|
logger.error('MFA: Unexpected disable form result', {
|
|
resp,
|
|
});
|
|
});
|
|
};
|
|
}
|