"use client"; import * as React from "react"; import { EllipsisVertical, KeyRound, LogOut } from "lucide-react"; import { useTranslations } from "next-intl"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from "@/components/ui/sidebar"; import { auth } from "@/lib/auth"; import { getInitials } from "@/lib/utils"; import { ChangePasswordDialog } from "./change-password-dialog"; export function NavUser({ user, }: { readonly user: { readonly name: string; readonly email: string; readonly avatar: string; }; }) { const { isMobile } = useSidebar(); const t = useTranslations("userMenu"); const [pwOpen, setPwOpen] = React.useState(false); function handleLogout() { auth.clearToken(); // 硬跳转:让浏览器用已清除的 cookie 发起全新请求, // middleware 才能正确读到空 token 并放行 /login window.location.href = "/login"; } return ( {getInitials(user.name)}
{user.name} {user.email}
{getInitials(user.name)}
{user.name} {user.email}
setPwOpen(true)}> {t("changePassword")} {t("logout")}
); }