feat: support useSession ssr for nuxt (#209)

This commit is contained in:
Bereket Engida
2024-10-17 22:14:56 +03:00
committed by GitHub
parent cda582f339
commit ab0d9cc309
6 changed files with 71 additions and 19 deletions

View File

@@ -1,6 +1,6 @@
import { createAuthClient } from "better-auth/vue";
export const client = createAuthClient({
export const authClient = createAuthClient({
baseURL: "http://localhost:3000",
});
@@ -11,4 +11,4 @@ export const {
useSession,
forgetPassword,
resetPassword,
} = client;
} = authClient;

View File

@@ -1,7 +1,6 @@
<script setup lang="ts">
import { useSession, signOut } from "~/lib/auth-client";
const session = useSession();
const router = useRouter();
const { data: session, isPending, error } = await useSession(useFetch);
</script>
@@ -16,15 +15,15 @@ const router = useRouter();
<CardContent>
<div class="flex gap-2 items-center">
<Avatar>
<AvatarImage :src="session.data?.user.image || ''" alt="User profile" />
<AvatarFallback>{{ session.data?.user.name[0] }}</AvatarFallback>
<AvatarImage :src="session?.user.image || ''" alt="User profile" />
<AvatarFallback>{{ session?.user.name[0] }}</AvatarFallback>
</Avatar>
<div>
<p class="text-sm">
{{ session.data?.user?.name }}
{{ session?.user?.name }}
</p>
<p class="text-xs">
{{ session.data?.user?.email }}
{{ session?.user?.email }}
</p>
</div>
</div>
@@ -32,7 +31,7 @@ const router = useRouter();
<CardFooter>
<Button @click="async () => {
await signOut()
router.push('/')
// router.push('/')
}" variant="secondary">
Sing Out
</Button>

View File

@@ -17,7 +17,7 @@ const features = [
"Rate Limiting",
"Session Management",
];
const session = useSession();
const { data: session } = await useSession(useFetch);
</script>
<template>
@@ -39,6 +39,7 @@ const session = useSession();
features and capabilities. <br />
</p>
<div class="flex flex-col gap-3 pt-2 flex-wrap">
<div class="border-y py-2 border-dotted bg-secondary/60 opacity-80">
<div class="text-xs flex items-center gap-2 justify-center text-muted-foreground">
@@ -58,12 +59,12 @@ const session = useSession();
</div>
</div>
<div class="flex items-center gap-2 mt-2 mx-auto">
<NuxtLink to="/sign-in" v-if="!session.data">
<NuxtLink to="/sign-in" v-if="!session">
<Button variant="outline" class="rounded-none">
Sign In
</Button>
</NuxtLink>
<NuxtLink to="/dashboard" v-if="session.data">
<NuxtLink to="/dashboard" v-if="session">
<Button variant="outline" class="rounded-none">
Dashboard
</Button>