import React, { useCallback, useState } from 'react'; import { useNavigate } from 'react-router'; import { Form, Input, Button, Card, Typography } from 'antd'; import { UserOutlined, LockOutlined } from '@ant-design/icons'; import api from '../../api'; import { BrandLogo } from '../../components/BrandLogo'; import { message } from '../../ui/app-message'; import { findRoleAwareLandingPath } from '../../auth/menu-policy'; import { usePermissionStore } from '../../store/permission/permissionStore'; import { useUserStore } from '../../store/user/userStore'; const { Title } = Typography; const LoginPage: React.FC = () => { const [loading, setLoading] = useState(false); const navigate = useNavigate(); const setSession = useUserStore((state) => state.setSession); const clearPermissions = usePermissionStore((state) => state.clearPermissions); const writePermissions = usePermissionStore((state) => state.writePermissions); const onFinish = useCallback( async (values: any) => { clearPermissions(); setLoading(true); try { const res: any = await api.post('/auth/login', values); setSession(res.access_token, res.user); const permissions = res.user.permissions || []; writePermissions(permissions); message.success('登录成功'); navigate(findRoleAwareLandingPath(res.user.roles || [], permissions) || '/', { replace: true, }); } catch (err: any) { message.error(err?.message || '登录失败'); } finally { setLoading(false); } }, [clearPermissions, navigate, setSession, writePermissions], ); return (
学生综合管理平台