import React, { useEffect, useState } from 'react'; import { Typography, Input, Form, Button, Spin, message } from 'antd'; import { request } from '@/utils/http'; import config from '@/utils/config'; import { history } from 'umi'; import QRCode from 'qrcode.react'; const { Title, Link } = Typography; const SecuritySettings = ({ user, userChange }: any) => { const [loading, setLoading] = useState(false); const [twoFactorActived, setTwoFactorActived] = useState(); const [twoFactoring, setTwoFactoring] = useState(false); const [twoFactorInfo, setTwoFactorInfo] = useState(); const [code, setCode] = useState(); const handleOk = (values: any) => { request .post(`${config.apiPrefix}user`, { data: { username: values.username, password: values.password, }, }) .then((data: any) => { localStorage.removeItem(config.authKey); history.push('/login'); }) .catch((error: any) => { console.log(error); }); }; const activeOrDeactiveTwoFactor = () => { if (twoFactorActived) { deactiveTowFactor(); } else { getTwoFactorInfo(); setTwoFactoring(true); } }; const deactiveTowFactor = () => { request .put(`${config.apiPrefix}user/two-factor/deactive`) .then((data: any) => { if (data.data) { setTwoFactorActived(false); userChange(); } }) .catch((error: any) => { console.log(error); }); }; const completeTowFactor = () => { request .put(`${config.apiPrefix}user/two-factor/active`, { data: { code } }) .then((data: any) => { if (data.data) { message.success('激活成功'); setTwoFactoring(false); setTwoFactorActived(true); userChange(); } }) .catch((error: any) => { console.log(error); }); }; const getTwoFactorInfo = () => { request .get(`${config.apiPrefix}user/two-factor/init`) .then((data: any) => { setTwoFactorInfo(data.data); }) .catch((error: any) => { console.log(error); }); }; useEffect(() => { setTwoFactorActived(user && user.twoFactorActived); }, [user]); return twoFactoring ? ( <> {twoFactorInfo ? (
第一步 下载两步验证手机应用,比如 Google Authenticator 、 Microsoft Authenticator 、 Authy 、 1Password 、 LastPass Authenticator 第二步 使用手机应用扫描二维码,或者输入秘钥 {twoFactorInfo?.secret}
第三步 输入手机应用上的6位数字 setCode(e.target.value)} placeholder="123456" />
) : ( )} ) : ( <>
修改用户名密码
两步验证
); }; export default SecuritySettings;