前端user/me提升到console/layout

This commit is contained in:
2025-06-18 17:26:50 +08:00
parent acaf14c403
commit af0e9c6522
3 changed files with 41 additions and 30 deletions

View File

@@ -1,3 +1,5 @@
'use client';
import { AppSidebar } from "@/components/app-sidebar"
import {
Breadcrumb,
@@ -10,15 +12,45 @@ import {
SidebarProvider,
SidebarTrigger,
} from "@/components/ui/sidebar"
import { UserApi } from "@/lib/api";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
import useSWR from "swr";
export default function ConsoleMenuLayout({
children,
}: {
children: React.ReactNode
}) {
const router = useRouter();
const { data: user, isLoading, error } = useSWR(
'/api/user/me',
() => UserApi.me(),
{
onError: (error) => {
if (error.statusCode === 401) {
localStorage.removeItem('token');
toast.info('登录凭证已失效,请重新登录');
router.replace('/console/login');
}
}
}
);
if (!isLoading && !error && !user) {
router.replace('/console/login');
localStorage.removeItem('token');
toast.error('账户状态异常,请重新登录');
}
return (
<SidebarProvider>
<AppSidebar />
<AppSidebar user={user} isUserLoading={isLoading} />
<SidebarInset>
<header className="flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12">
<div className="flex items-center gap-2 px-4">