import IconFont from '@/components/IconFont'; import { apiAdminDisable2FA } from '@/services/master/AuthController'; import { ExclamationCircleOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Button, Modal, Tooltip } from 'antd'; import { MessageInstance } from 'antd/es/message/interface'; import { useState } from 'react'; interface Disable2FAProps { user: MasterModel.UserResponse; message: MessageInstance; onSuccess?: (isSuccess: boolean) => void; } const Disable2FA = ({ user, message, onSuccess }: Disable2FAProps) => { const intl = useIntl(); const [isModalOpen, setIsModalOpen] = useState(false); const [isLoading, setIsLoading] = useState(false); // Only show if user has 2FA enabled if (!user.enable_2fa) { return null; } const handleConfirmDisable = async () => { if (!user.id) return; setIsLoading(true); try { await apiAdminDisable2FA(user.id); message.success( intl.formatMessage({ id: 'master.users.disable2fa.success', defaultMessage: '2FA has been disabled successfully', }), ); setIsModalOpen(false); onSuccess?.(true); } catch (error) { console.error('Disable 2FA error:', error); message.error( intl.formatMessage({ id: 'master.users.disable2fa.error', defaultMessage: 'Failed to disable 2FA', }), ); onSuccess?.(false); } finally { setIsLoading(false); } }; return ( <> , , ]} >

{intl.formatMessage({ id: 'master.users.disable2fa.modal.warning', defaultMessage: 'Are you sure you want to disable 2FA for this user?', })}

{user.email}

{intl.formatMessage({ id: 'master.users.disable2fa.modal.caution', defaultMessage: 'Warning: Disabling 2FA will reduce account security. The user will need to re-enable 2FA from their profile settings.', })}

); }; export default Disable2FA;