The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/client/components/TwoFactorModal/TwoFactorModal.tsx

45 lines
1.0 KiB

import React, { ReactElement } from 'react';
import TwoFactorEmail from './TwoFactorEmailModal';
import TwoFactorPassword from './TwoFactorPasswordModal';
import TwoFactorTotp from './TwoFactorTotpModal';
export enum Method {
TOTP = 'totp',
EMAIL = 'email',
PASSWORD = 'password',
}
export type OnConfirm = (code: string, method: Method) => void;
type TwoFactorModalProps = {
method: Method;
onConfirm: OnConfirm;
onClose: () => void;
emailOrUsername: string;
};
const TwoFactorModal = ({
method,
onConfirm,
onClose,
emailOrUsername,
}: TwoFactorModalProps): ReactElement => {
if (method === Method.TOTP) {
return <TwoFactorTotp onConfirm={onConfirm} onClose={onClose} />;
}
if (method === Method.EMAIL) {
return (
<TwoFactorEmail onConfirm={onConfirm} onClose={onClose} emailOrUsername={emailOrUsername} />
);
}
if (method === Method.PASSWORD) {
return <TwoFactorPassword onConfirm={onConfirm} onClose={onClose} />;
}
throw new Error('Invalid Two Factor method');
};
export default TwoFactorModal;