Feat: Implement sign out functionality in UserNav

This commit is contained in:
2025-12-03 23:04:56 +03:00
parent c2be1ddbd6
commit a6962a64e1
2 changed files with 24 additions and 10 deletions

10
src/app/(auth)/actions.ts Normal file
View File

@@ -0,0 +1,10 @@
'use server'
import { createClient } from "@/lib/supabase/server"
import { redirect } from "next/navigation"
export async function signOut() {
const supabase = await createClient()
await supabase.auth.signOut()
redirect('/login')
}

View File

@@ -1,3 +1,5 @@
'use client'
import { import {
Avatar, Avatar,
AvatarFallback, AvatarFallback,
@@ -14,8 +16,16 @@ import {
DropdownMenuShortcut, DropdownMenuShortcut,
DropdownMenuTrigger, DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu" } from "@/components/ui/dropdown-menu"
import { signOut } from "@/app/(auth)/actions"
import { useRouter } from "next/navigation"
export function UserNav() { export function UserNav() {
const router = useRouter()
const handleSignOut = async () => {
await signOut()
}
return ( return (
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
@@ -29,27 +39,21 @@ export function UserNav() {
<DropdownMenuContent className="w-56" align="end" forceMount> <DropdownMenuContent className="w-56" align="end" forceMount>
<DropdownMenuLabel className="font-normal"> <DropdownMenuLabel className="font-normal">
<div className="flex flex-col space-y-1"> <div className="flex flex-col space-y-1">
<p className="text-sm font-medium leading-none">Admin</p> <p className="text-sm font-medium leading-none">Kullanıcı</p>
<p className="text-xs leading-none text-muted-foreground"> <p className="text-xs leading-none text-muted-foreground">
admin@example.com Hesabım
</p> </p>
</div> </div>
</DropdownMenuLabel> </DropdownMenuLabel>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuGroup> <DropdownMenuGroup>
<DropdownMenuItem> <DropdownMenuItem onClick={() => router.push('/dashboard/settings')}>
Profil
<DropdownMenuShortcut>P</DropdownMenuShortcut>
</DropdownMenuItem>
<DropdownMenuItem>
Ayarlar Ayarlar
<DropdownMenuShortcut>S</DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuGroup> </DropdownMenuGroup>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem> <DropdownMenuItem onClick={handleSignOut}>
Çıkış Yap Çıkış Yap
<DropdownMenuShortcut>Q</DropdownMenuShortcut>
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>