import React, { useContext, useEffect, useState } from 'react'; import { Button, Divider, Form, Grid, Header, Image, Message, Modal, Segment, Card, } 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 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('Not logged in or login has expired, please log in again!'); } 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('Login successful!'); 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('Login successful!'); showWarning('Please change the default password immediately!'); } else { navigate('/token'); showSuccess('Login successful!'); } } else { showError(message); } } } return (
User Login
Forgot password? Click to reset
No account? Click to register
{(status.github_oauth || status.wechat_login || status.lark_client_id) && ( <> Log in with other methods
{status.github_oauth && (
)}
setShowWeChatLoginModal(false)} onOpen={() => setShowWeChatLoginModal(true)} open={showWeChatLoginModal} size={'mini'} >

Scan the QR code with WeChat, follow the official account and enter 'verification code' to get the verification code (valid within three minutes)

); }; export default LoginForm;