更新路由守卫

Change-Id: Iddd1d006202a03e8a97e3a90d64d9a43c5d2cb78
diff --git a/Merge/front/src/router/Guards.jsx b/Merge/front/src/router/Guards.jsx
index 3fa7408..fe45e30 100644
--- a/Merge/front/src/router/Guards.jsx
+++ b/Merge/front/src/router/Guards.jsx
@@ -1,24 +1,53 @@
 // src/router/Guards.jsx
 import React from 'react'
-import { Navigate, Outlet, useLocation } from 'react-router-dom'
-import { getAuthToken, getUserInfo } from '../utils/auth'
+import { Navigate, Outlet, useLocation, useParams } from 'react-router-dom'
+import { getUserInfo } from '../utils/auth'
 
-/** 登录检查:有 token 才放行,否则跳到 /login */
-export function RequireAuth({ children }) {
-  const token = getAuthToken()
-  const loc   = useLocation()
-  if (!token) {
-    return <Navigate to="/login" state={{ from: loc }} replace />
+/** 需登录 */
+export function RequireAuth() {
+  const user = getUserInfo()
+  const location = useLocation()
+  if (!user) {
+    return <Navigate to="/login" state={{ from: location }} replace />
   }
-  return children ?? <Outlet />
+  return <Outlet />
 }
 
-/** 角色检查:只有 allowedRoles 内的角色才能访问 */
-export function RequireRole({ allowedRoles, children }) {
+/** 需特定角色 */
+export function RequireRole({ allowedRoles }) {
   const user = getUserInfo()
-  // user 里应该有 .role
   if (!user || !allowedRoles.includes(user.role)) {
     return <Navigate to="/login" replace />
   }
-  return children ?? <Outlet />
+  return <Outlet />
+}
+
+/** 只能访问自己的用户详情 */
+export function RequireOwnProfile() {
+  const user = getUserInfo()
+  const { userId } = useParams()
+  if (!user || user.id.toString() !== userId) {
+    return <Navigate to="/home" replace />
+  }
+  return <Outlet />
+}
+
+/** 只能访问自己的 Admin 页面 */
+export function RequireAdminOwn() {
+  const user = getUserInfo()
+  const { userId } = useParams()
+  if (!user || user.role !== 'admin' || user.id.toString() !== userId) {
+    return <Navigate to="/login" replace />
+  }
+  return <Outlet />
+}
+
+/** 只能访问自己的 SuperAdmin 区 */
+export function RequireSuperAdminOwn() {
+  const user = getUserInfo()
+  const { userId } = useParams()
+  if (!user || user.role !== 'superadmin' || user.id.toString() !== userId) {
+    return <Navigate to="/login" replace />
+  }
+  return <Outlet />
 }