"use client"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { Alert } from "@calcom/ui/components/alert"; import { Badge } from "@calcom/ui/components/badge"; import { SettingsToggle } from "@calcom/ui/components/form"; import { SkeletonButton, SkeletonContainer, SkeletonText } from "@calcom/ui/components/skeleton"; import DisableTwoFactorModal from "@components/settings/DisableTwoFactorModal"; import EnableTwoFactorModal from "@components/settings/EnableTwoFactorModal"; import { signOut, useSession } from "next-auth/react"; import { useState } from "react"; const SkeletonLoader = () => { return (
); }; const TwoFactorAuthView = () => { const utils = trpc.useUtils(); const { data: sessionData } = useSession(); const { t } = useLocale(); const { data: user, isPending } = trpc.viewer.me.get.useQuery({ includePasswordAdded: true }); const [enableModalOpen, setEnableModalOpen] = useState(false); const [disableModalOpen, setDisableModalOpen] = useState(false); if (isPending) return ; const isCalProvider = user?.identityProvider === "CAL"; const canSetupTwoFactor = !isCalProvider && !user?.twoFactorEnabled && !user?.passwordAdded; return ( <> {canSetupTwoFactor && } user?.twoFactorEnabled ? setDisableModalOpen(true) : setEnableModalOpen(true) } Badge={ {user?.twoFactorEnabled ? t("enabled") : t("disabled")} } switchContainerClassName="rounded-t-none border-t-0" /> setEnableModalOpen(!enableModalOpen)} onEnable={() => { setEnableModalOpen(false); if (sessionData?.user.role === "INACTIVE_ADMIN") { // Session role is set at login time, so we need to sign out // and sign back in to refresh the role and dismiss the banner signOut({ callbackUrl: "/auth/login" }); } else { utils.viewer.me.invalidate(); } }} onCancel={() => { setEnableModalOpen(false); }} /> setDisableModalOpen(!disableModalOpen)} onDisable={() => { setDisableModalOpen(false); utils.viewer.me.invalidate(); }} onCancel={() => { setDisableModalOpen(false); }} /> ); }; export default TwoFactorAuthView;