From 3d0797fcf085c0fceed00eec61dce7e47e101c4e Mon Sep 17 00:00:00 2001 From: ToBinio Date: Wed, 12 Nov 2025 10:10:58 +0100 Subject: [PATCH] move to better-auth first draft --- README.md | 3 + app/components/settings/GoogleLogin.vue | 55 +-- app/composables/login/useLoginEmail.ts | 13 - app/composables/login/useLoginID.ts | 9 + app/composables/login/useLoginImageUrl.ts | 10 +- app/composables/login/useLoginSession.ts | 21 + app/composables/login/useLoginToken.ts | 8 - app/composables/useInitData.ts | 30 +- app/pages/index.vue | 10 +- app/utils/auth.ts | 3 + nuxt.config.ts | 1 - package.json | 5 +- pnpm-lock.yaml | 508 +++++++++++++++------- server/api/auth/.post.ts | 31 -- server/api/auth/[...all].ts | 5 + server/api/auth/renew.get.ts | 9 - server/api/auth/valid.get.ts | 14 - server/api/categories/.get.ts | 4 +- server/api/categories/.post.ts | 6 +- server/api/categories/[uuid].delete.ts | 6 +- server/api/categories/sse.ts | 4 +- server/api/tags/.get.ts | 4 +- server/api/tags/.post.ts | 6 +- server/api/tags/[uuid].delete.ts | 6 +- server/api/tags/sse.ts | 4 +- server/api/todos/.get.ts | 4 +- server/api/todos/.post.ts | 6 +- server/api/todos/[uuid].delete.ts | 6 +- server/api/todos/move.post.ts | 6 +- server/api/todos/sse.ts | 4 +- server/auth.ts | 12 + server/utils/authHandle.ts | 66 +-- shared/auth.ts | 16 - 33 files changed, 490 insertions(+), 405 deletions(-) delete mode 100644 app/composables/login/useLoginEmail.ts create mode 100644 app/composables/login/useLoginID.ts create mode 100644 app/composables/login/useLoginSession.ts delete mode 100644 app/composables/login/useLoginToken.ts create mode 100644 app/utils/auth.ts delete mode 100644 server/api/auth/.post.ts create mode 100644 server/api/auth/[...all].ts delete mode 100644 server/api/auth/renew.get.ts delete mode 100644 server/api/auth/valid.get.ts create mode 100644 server/auth.ts delete mode 100644 shared/auth.ts diff --git a/README.md b/README.md index 0529768..738839d 100644 --- a/README.md +++ b/README.md @@ -17,4 +17,7 @@ JWT_TTL_SECONDS=2592000 // 1Month UPSTASH_URL= UPSTASH_TOKEN= + +BETTER_AUTH_SECRET= +BETTER_AUTH_URL=http://localhost:3000 ``` diff --git a/app/components/settings/GoogleLogin.vue b/app/components/settings/GoogleLogin.vue index 3775f54..b35404b 100644 --- a/app/components/settings/GoogleLogin.vue +++ b/app/components/settings/GoogleLogin.vue @@ -6,59 +6,34 @@ PopoverRoot, PopoverTrigger, } from "reka-ui"; - import type { ImplicitFlowSuccessResponse } from "vue3-google-signin"; + import { useLoginID } from "~/composables/login/useLoginID"; import { useLoginImageUrl } from "~/composables/login/useLoginImageUrl"; - import { useLoginToken } from "~/composables/login/useLoginToken"; + import { authClient } from "~/utils/auth"; const { t } = useI18n(); - const token = useLoginToken(); + const id = useLoginID(); const userImage = useLoginImageUrl(); const isLoggedIn = computed(() => { - return !!token.value; + return !!id.value; }); - const { isReady, login } = useCodeClient({ - onSuccess: handleLoginSuccess, - onError: handleLoginError, - }); - - async function handleLoginSuccess(response: ImplicitFlowSuccessResponse) { - const code = response.code; - - const res = await $fetch("/api/auth/", { - method: "POST", - body: { code }, - ...useFetchOptions(), - }).catch(async (err) => { - //todo - show in toast - console.warn(err); - return undefined; + async function login() { + const data = await authClient.signIn.social({ + provider: "google", }); - - if (res) { - token.value = res.token; - } - } - - async function handleLoginError() { - console.error("Login failed"); } - function logout() { - token.value = undefined; + async function logout() { + await authClient.signOut(); }