Răsfoiți Sursa

♻️ refactor(route): adjust authentication redirect path

- 修改ProtectedRoute组件,将未认证用户重定向路径从'/admin/login'改为'/login'

♻️ refactor(home): remove redundant home page content

- 删除Home组件中系统介绍和管理入口按钮等冗余内容

🐛 fix(api): correct user follow API call parameters

- 修复FollowPage中userId类型转换问题,确保为数字类型
- 修正关注/取消关注API调用方式,使用param传递用户ID

🔧 chore(login): simplify login page logic

- 调整LoginPage中useAuth导入路径,使用home目录下的AuthProvider
- 简化登录逻辑,直接调用login方法处理认证流程

♻️ refactor(route): restructure application routes

- 修改路由配置,将根路径'/'指向受保护的MainLayout
- 移除admin前缀,简化路由结构
- 调整子路由配置,将HomePage作为默认路由
yourname 4 luni în urmă
părinte
comite
b99ea6cf9a

+ 1 - 1
src/client/home/components/ProtectedRoute.tsx

@@ -15,7 +15,7 @@ export const ProtectedRoute = ({ children }: { children: React.ReactNode }) => {
   useEffect(() => {
     // 只有在加载完成且未认证时才重定向
     if (!isLoading && !isAuthenticated) {
-      navigate('/admin/login', { replace: true });
+      navigate('/login', { replace: true });
     }
   }, [isAuthenticated, isLoading, navigate]);
   

+ 0 - 41
src/client/home/index.tsx

@@ -5,47 +5,6 @@ import { AuthProvider } from './hooks/AuthProvider'
 import { RouterProvider } from 'react-router-dom'
 import { router } from './routes'
 
-const Home = () => {
-  return (
-
-    <div className="min-h-screen bg-gray-50 flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8">
-      <div className="max-w-md w-full space-y-8">
-        {/* 系统介绍区域 */}
-        <div className="text-center">
-          <h1 className="text-4xl font-bold text-gray-900 mb-4">
-            {getGlobalConfig('APP_NAME')}
-          </h1>
-          <p className="text-lg text-gray-600 mb-8">
-            全功能应用Starter
-          </p>
-          <p className="text-base text-gray-500 mb-8">
-            这是一个基于Hono和React的应用Starter,提供了用户认证、文件管理、图表分析、地图集成和主题切换等常用功能。
-          </p>
-        </div>
-
-        {/* 管理入口按钮 */}
-        <div className="space-y-4">
-          <a
-            href="/admin"
-            className="w-full flex justify-center py-3 px-4 border border-transparent rounded-md shadow-sm text-lg font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
-          >
-            进入管理后台
-          </a>
-
-          {/* 移动端入口按钮 */}
-          <a
-            href="/mobile"
-            className="w-full flex justify-center py-3 px-4 border border-blue-600 rounded-md shadow-sm text-lg font-medium text-blue-600 bg-white hover:bg-blue-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
-          >
-            进入移动端
-          </a>
-
-        </div>
-      </div>
-    </div>
-  )
-}
-
 // 创建QueryClient实例
 const queryClient = new QueryClient();
 

+ 10 - 6
src/client/home/pages/FollowPage.tsx

@@ -26,7 +26,7 @@ const FollowPage: React.FC = () => {
   // 从URL获取关注类型(following/followers)和用户ID
   const searchParams = new URLSearchParams(location.search);
   const type = (searchParams.get('type') || 'following') as FollowType;
-  const userId = searchParams.get('userId') || user?.id?.toString();
+  const userId = Number(searchParams.get('userId')) || user?.id;
 
   // 获取关注列表或粉丝列表
   const fetchFollowList = async () => {
@@ -37,11 +37,13 @@ const FollowPage: React.FC = () => {
       
       let response;
       if (type === 'following') {
-        response = await userClient[userId].following.$get({
+        response = await userClient[':id'].following.$get({
+          param: { id: userId },
           query: { page: currentPage, pageSize }
         });
       } else {
-        response = await userClient[userId].followers.$get({
+        response = await userClient[':id'].followers.$get({
+          param: { id: userId },
           query: { page: currentPage, pageSize }
         });
       }
@@ -65,11 +67,13 @@ const FollowPage: React.FC = () => {
     try {
       if (isFollowing) {
         // 取消关注
-        await userClient[user.id].follow[targetUserId].$delete();
+        await userClient[':id'].follow.$delete({
+          param: { id: targetUserId}
+        });
       } else {
         // 关注用户
-        await userClient[user.id].follow.$post({
-          json: { followingId: targetUserId }
+        await userClient[':id'].follow.$post({
+          param: { id: targetUserId}
         });
       }
       

+ 2 - 20
src/client/home/pages/LoginPage.tsx

@@ -3,7 +3,7 @@ import { Form, Input, Button, Card, Typography, message, Divider } from 'antd';
 import { UserOutlined, LockOutlined } from '@ant-design/icons';
 import { Link, useNavigate } from 'react-router-dom';
 import { authClient } from '@/client/api';
-import { useAuth } from '@/client/admin/hooks/AuthProvider';
+import { useAuth } from '@/client/home/hooks/AuthProvider';
 
 const { Title } = Typography;
 
@@ -16,25 +16,7 @@ const LoginPage: React.FC = () => {
   const handleSubmit = async (values: any) => {
     try {
       setLoading(true);
-      
-      // 调用登录API
-      const response = await authClient.login.password.$post({
-        json: {
-          username: values.username,
-          password: values.password
-        }
-      });
-      
-      if (!response.ok) {
-        const errorData = await response.json();
-        throw new Error(errorData.message || '登录失败');
-      }
-      
-      const data = await response.json();
-      
-      // 保存token并更新认证状态
-      localStorage.setItem('token', data.token);
-      await login(data.user, data.token);
+      await login(values.username, values.password);
       
       message.success('登录成功');
       navigate('/');

+ 4 - 20
src/client/home/routes.tsx

@@ -4,41 +4,25 @@ import { ProtectedRoute } from './components/ProtectedRoute';
 import { ErrorPage } from './components/ErrorPage';
 import { NotFoundPage } from './components/NotFoundPage';
 import HomePage from './pages/HomePage';
-import LoginPage from './pages/LoginPage';
 import { MainLayout } from './layouts/MainLayout';
-import UserProfilePage from './pages/UserProfilePage';
-import FollowPage from './pages/FollowPage';
+import LoginPage from './pages/LoginPage';
 
 export const router = createBrowserRouter([
-  {
-    path: '/',
-    element: <HomePage />
-  },
   {
     path: '/login',
     element: <LoginPage />
   },
   {
-    path: '/admin',
+    path: '/',
     element: (
       <ProtectedRoute>
         <MainLayout />
       </ProtectedRoute>
     ),
     children: [
-      // {
-      //   index: true,
-      //   element: <Navigate to="/admin/dashboard" />
-      // },
       {
-        path: 'follow',
-        element: <FollowPage />,
-        errorElement: <ErrorPage />
-      },
-      {
-        path: 'users/:id',
-        element: <UserProfilePage />,
-        errorElement: <ErrorPage />
+        path: '/',
+        element: <HomePage />
       },
       {
         path: '*',