Something went wrong. Try again.
A very simple bookmarking webapp pinboard.ing
Something went wrong. Try again.
2.1 kB · 71 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172import { subjects } from "@auth/subjects.ts"import { getClient } from "@auth/client.ts"import { useQuery } from "@tanstack/solid-query"import { client } from "../apiclient.ts"
if (typeof cookieStore !== "undefined") { await import("cookie-store")}
const clientID = import.meta.env.VITE_AUTH_CLIENT_IDconst issuerUrl = import.meta.env.VITE_AUTH_ISSUER_URL
export const authClient = getClient(clientID, issuerUrl)
export async function isAuthenticated() { const accessToken = await cookieStore.get("access_token") const refreshToken = await cookieStore.get("refresh_token")
if (!accessToken) { return false }
const verified = await authClient.verify(subjects, accessToken.value!, { refresh: refreshToken?.value, })
if (verified.err) { console.error("Error verifying token:", verified.err) await cookieStore.delete("access_token") await cookieStore.delete("refresh_token")
return false }
if (verified.tokens) { await cookieStore.set({ name: "access_token", value: verified.tokens.access, sameSite: "lax", path: "/", expires: Temporal.Now.instant().add({ seconds: verified.tokens.expiresIn, }).epochMilliseconds, }) await cookieStore.set({ name: "refresh_token", value: verified.tokens.refresh, sameSite: "lax", path: "/", expires: Temporal.Now.instant().add({ seconds: 60 * 60 * 24 * 400, // 400 days }).epochMilliseconds, }) }
return verified.subject}
export function useMe() { return useQuery(() => ({ queryKey: [client.api.v1.account.me.$url().pathname], queryFn: async () => { const res = await client.api.v1.account.me.$get() if (!res.ok) { throw new Error("Not authenticated") } return await res.json() }, retry: false, }))}