import { useState, useEffect } from 'react'; import UserCard from 'ui-component/cards/UserCard'; import { Card, Button, InputLabel, FormControl, OutlinedInput, Stack, Alert, Divider, Chip, Typography, SvgIcon, useMediaQuery } from '@mui/material'; import Grid from '@mui/material/Unstable_Grid2'; import SubCard from 'ui-component/cards/SubCard'; import { IconBrandWechat, IconBrandGithub, IconMail, IconBrandTelegram } from '@tabler/icons-react'; import Label from 'ui-component/Label'; import { API } from 'utils/api'; import { showError, showSuccess, onGitHubOAuthClicked, copy, trims, onLarkOAuthClicked } from 'utils/common'; import * as Yup from 'yup'; import WechatModal from 'views/Authentication/AuthForms/WechatModal'; import { useSelector } from 'react-redux'; import EmailModal from './component/EmailModal'; import Turnstile from 'react-turnstile'; import { ReactComponent as Lark } from 'assets/images/icons/lark.svg'; import { useTheme } from '@mui/material/styles'; const validationSchema = Yup.object().shape({ username: Yup.string().required('用户名 不能为空').min(3, '用户名 不能小于 3 个字符'), display_name: Yup.string(), password: Yup.string().test('password', '密码不能小于 8 个字符', (val) => { return !val || val.length >= 8; }) }); export default function Profile() { const [inputs, setInputs] = useState([]); const [turnstileEnabled, setTurnstileEnabled] = useState(false); const [turnstileSiteKey, setTurnstileSiteKey] = useState(''); const [turnstileToken, setTurnstileToken] = useState(''); const [openWechat, setOpenWechat] = useState(false); const [openEmail, setOpenEmail] = useState(false); const status = useSelector((state) => state.siteInfo); const theme = useTheme(); const matchDownSM = useMediaQuery(theme.breakpoints.down('md')); const handleWechatOpen = () => { setOpenWechat(true); }; const handleWechatClose = () => { setOpenWechat(false); }; const handleInputChange = (event) => { let { name, value } = event.target; setInputs((inputs) => ({ ...inputs, [name]: value })); }; const loadUser = async () => { try { let res = await API.get(`/api/user/self`); const { success, message, data } = res.data; if (success) { setInputs(data); } else { showError(message); } } catch (error) { return; } }; const bindWeChat = async (code) => { if (code === '') return; try { const res = await API.get(`/api/oauth/wechat/bind?code=${code}`); const { success, message } = res.data; if (success) { showSuccess('微信账户绑定成功!'); } return { success, message }; } catch (err) { // 请求失败,设置错误信息 return { success: false, message: '' }; } }; const generateAccessToken = async () => { try { const res = await API.get('/api/user/token'); const { success, message, data } = res.data; if (success) { setInputs((inputs) => ({ ...inputs, access_token: data })); copy(data, '令牌'); } else { showError(message); } } catch (error) { return; } }; const submit = async () => { try { let inputValue = inputs; // inputValue.username = trims(inputValue.username); inputValue.display_name = trims(inputValue.display_name); await validationSchema.validate(inputValue); const res = await API.put(`/api/user/self`, inputValue); const { success, message } = res.data; if (success) { showSuccess('用户信息更新成功!'); } else { showError(message); } } catch (err) { showError(err.message); } }; useEffect(() => { if (status) { if (status.turnstile_check) { setTurnstileEnabled(true); setTurnstileSiteKey(status.turnstile_site_key); } } loadUser().then(); }, [status]); return ( <> 用户名 密码 显示名称 {status.wechat_login && !inputs.wechat_id && ( )} {status.github_oauth && !inputs.github_id && ( )} {status.lark_client_id && !inputs.lark_id && ( )} {turnstileEnabled ? ( { setTurnstileToken(token); }} /> ) : ( <> )} {status.telegram_bot && ( //&& !inputs.telegram_id Telegram 机器人
1. 点击下方按钮,将会在 Telegram 中打开 机器人,点击 /start 开始。
} label={'@' + status.telegram_bot} color="primary" variant="outlined" size="small" onClick={() => window.open('https://t.me/' + status.telegram_bot, '_blank')} />

2. 向机器人发送/bind命令后,输入下方的访问令牌即可绑定。(如果没有生成,请点击下方按钮生成)
{/* */}
)}
注意,此处生成的令牌用于系统管理,而非用于请求 OpenAI 相关的服务,请知悉。 {inputs.access_token && ( 你的访问令牌是: {inputs.access_token}
请妥善保管。如有泄漏,请立即重置。
)}
{ setOpenEmail(false); }} /> ); }