import React, { useState } from "react"; import { Group, Text, Button } from "@mantine/core"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { notifications } from "@mantine/notifications"; import { useTranslation } from "react-i18next"; import { getMfaStatus } from "@/ee/mfa"; import { MfaSetupModal } from "@/ee/mfa"; import { MfaDisableModal } from "@/ee/mfa"; import { MfaBackupCodesModal } from "@/ee/mfa"; export function MfaSettings() { const { t } = useTranslation(); const queryClient = useQueryClient(); const [setupModalOpen, setSetupModalOpen] = useState(false); const [disableModalOpen, setDisableModalOpen] = useState(false); const [backupCodesModalOpen, setBackupCodesModalOpen] = useState(false); const { data: mfaStatus, isLoading } = useQuery({ queryKey: ["mfa-status"], queryFn: getMfaStatus, }); if (isLoading) { return null; } // Check if MFA is truly enabled const isMfaEnabled = mfaStatus?.isEnabled === true; const handleSetupComplete = () => { setSetupModalOpen(false); queryClient.invalidateQueries({ queryKey: ["mfa-status"] }); notifications.show({ title: t("Success"), message: t("Two-factor authentication has been enabled"), }); }; const handleDisableComplete = () => { setDisableModalOpen(false); queryClient.invalidateQueries({ queryKey: ["mfa-status"] }); notifications.show({ title: t("Success"), message: t("Two-factor authentication has been disabled"), color: "blue", }); }; return ( <>
{t("2-step verification")} {!isMfaEnabled ? t( "Protect your account with an additional verification layer when signing in.", ) : t("Two-factor authentication is active on your account.")}
{!isMfaEnabled ? ( ) : ( )}
setSetupModalOpen(false)} onComplete={handleSetupComplete} /> setDisableModalOpen(false)} onComplete={handleDisableComplete} /> setBackupCodesModalOpen(false)} /> ); }