import React, { useContext, useEffect, useState } from 'react'; import { Button, Divider, Form, Grid, Header, Image, Message, Modal, Segment } from 'semantic-ui-react'; import { Link, useNavigate, useSearchParams } from 'react-router-dom'; import { UserContext } from '../context/User'; import { API, getLogo, showError, showSuccess, showWarning } from '../helpers'; import { onGitHubOAuthClicked, onLarkOAuthClicked } from './utils'; import { BASE_URL } from '../config'; import larkIcon from '../images/lark.svg'; const LoginForm = () => { const [inputs, setInputs] = useState({ username: '', password: '', wechat_verification_code: '' }); const [searchParams, setSearchParams] = useSearchParams(); const [submitted, setSubmitted] = useState(false); const { username, password } = inputs; const [userState, userDispatch] = useContext(UserContext); let navigate = useNavigate(); const [status, setStatus] = useState({}); const logo = getLogo(); useEffect(() => { if (searchParams.get('expired')) { showError('未登录或登录已过期,请重新登录!'); } let status = localStorage.getItem('status'); if (status) { status = JSON.parse(status); setStatus(status); } }, []); const [showWeChatLoginModal, setShowWeChatLoginModal] = useState(false); const onWeChatLoginClicked = () => { setShowWeChatLoginModal(true); }; const onSubmitWeChatVerificationCode = async () => { const res = await API.get( `/api/oauth/wechat?code=${inputs.wechat_verification_code}` ); const { success, message, data } = res.data; if (success) { userDispatch({ type: 'login', payload: data }); localStorage.setItem('user', JSON.stringify(data)); navigate('/'); showSuccess('登录成功!'); setShowWeChatLoginModal(false); } else { showError(message); } }; function handleChange(e) { const { name, value } = e.target; setInputs((inputs) => ({ ...inputs, [name]: value })); } async function handleSubmit(e) { setSubmitted(true); if (username && password) { const res = await API.post(`/api/user/login`, { username, password }); const { success, message, data } = res.data; if (success) { userDispatch({ type: 'login', payload: data }); localStorage.setItem('user', JSON.stringify(data)); if (username === 'root' && password === '123456') { navigate('/user/edit'); showSuccess('登录成功!'); showWarning('请立刻修改默认密码!'); } else { navigate('/token'); showSuccess('登录成功!'); } } else { showError(message); } } } return (
用户登录
忘记密码? 点击重置 ; 没有账户? 点击注册 {status.github_oauth || status.wechat_login || status.lark_client_id ? ( <> Or
{status.github_oauth ? (
) : ( <> )} setShowWeChatLoginModal(false)} onOpen={() => setShowWeChatLoginModal(true)} open={showWeChatLoginModal} size={'mini'} >

微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)

); }; export default LoginForm;