feat: 首次登录引导与注册修复
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
import * as React from "react"
|
||||
import Link from "next/link"
|
||||
import { Bell, Menu, Search } from "lucide-react"
|
||||
import { signOut } from "next-auth/react"
|
||||
import { signOut, useSession } from "next-auth/react"
|
||||
|
||||
import { Button } from "@/shared/components/ui/button"
|
||||
import { Input } from "@/shared/components/ui/input"
|
||||
@@ -30,6 +30,19 @@ import { useSidebar } from "./sidebar-provider"
|
||||
|
||||
export function SiteHeader() {
|
||||
const { toggleSidebar, isMobile } = useSidebar()
|
||||
const { data: session, status } = useSession()
|
||||
|
||||
const name = session?.user?.name ?? ""
|
||||
const email = session?.user?.email ?? ""
|
||||
const displayName = name || email || (status === "loading" ? "加载中..." : "未登录")
|
||||
|
||||
const fallbackBase = name || email || "?"
|
||||
const avatarFallback = fallbackBase
|
||||
.split(/\s+/)
|
||||
.filter(Boolean)
|
||||
.slice(0, 2)
|
||||
.map((p) => p[0]?.toUpperCase())
|
||||
.join("")
|
||||
|
||||
return (
|
||||
<header className="bg-background/95 supports-[backdrop-filter]:bg-background/60 sticky top-0 z-50 flex h-16 items-center border-b px-4 backdrop-blur-sm">
|
||||
@@ -80,15 +93,17 @@ export function SiteHeader() {
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button variant="ghost" className="relative size-8 rounded-full">
|
||||
<Avatar className="size-8">
|
||||
<AvatarFallback>AD</AvatarFallback>
|
||||
<AvatarFallback>{avatarFallback}</AvatarFallback>
|
||||
</Avatar>
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent className="w-56" align="end" forceMount>
|
||||
<DropdownMenuLabel className="font-normal">
|
||||
<div className="flex flex-col space-y-1">
|
||||
<p className="text-sm font-medium leading-none">Admin User</p>
|
||||
<p className="text-muted-foreground text-xs leading-none">admin@nextedu.com</p>
|
||||
<p className="text-sm font-medium leading-none">{displayName}</p>
|
||||
{email ? (
|
||||
<p className="text-muted-foreground text-xs leading-none">{email}</p>
|
||||
) : null}
|
||||
</div>
|
||||
</DropdownMenuLabel>
|
||||
<DropdownMenuSeparator />
|
||||
|
||||
Reference in New Issue
Block a user