{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "password-based-auth-nuxtjs", "type": "registry:block", "title": "Password Based Auth flow for Nuxt.js and Supabase", "description": "Password Based Auth flow for Nuxt.js and Supabase", "dependencies": [ "@supabase/ssr@latest", "@supabase/supabase-js@latest" ], "registryDependencies": [ "button", "card", "input", "label" ], "files": [ { "path": "registry/default/password-based-auth/nuxtjs/app/components/login-form.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/components/login-form.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/components/sign-up-form.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/components/sign-up-form.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/components/forgot-password-form.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/components/forgot-password-form.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/components/update-password-form.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/components/update-password-form.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/login.vue", "content": "\n\n", "type": "registry:file", "target": "app/pages/auth/login.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/sign-up.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/pages/auth/sign-up.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/forgot-password.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/pages/auth/forgot-password.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/update-password.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/pages/auth/update-password.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/error.vue", "content": "\n\n", "type": "registry:file", "target": "app/pages/auth/error.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/sign-up-success.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/pages/auth/sign-up-success.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/app/pages/protected/index.vue", "content": "\n\n\n", "type": "registry:file", "target": "app/pages/protected/index.vue" }, { "path": "registry/default/password-based-auth/nuxtjs/server/routes/auth/confirm.get.ts", "content": "import { getQuery, defineEventHandler, sendRedirect } from 'h3'\nimport type { EmailOtpType } from '@supabase/supabase-js'\nimport { createSupabaseServerClient } from '@/registry/default/clients/nuxtjs/server/supabase/client'\n\nexport default defineEventHandler(async (event) => {\n const query = getQuery(event)\n const token_hash = query.token_hash as string | null\n const type = query.type as EmailOtpType | null\n const _next = query.next as string | undefined\n const next = _next?.startsWith('/') ? _next : '/'\n\n if (token_hash && type) {\n const supabase = createSupabaseServerClient(event)\n\n const { error } = await supabase.auth.verifyOtp({\n type,\n token_hash,\n })\n\n if (!error) {\n return sendRedirect(event, next)\n } else {\n return sendRedirect(event, `/auth/error?error=${encodeURIComponent(error.message)}`)\n }\n }\n\n return sendRedirect(event, `/auth/error?error=${encodeURIComponent('No token hash or type')}`)\n})\n", "type": "registry:file", "target": "server/routes/auth/confirm.get.ts" } ] }