© 2026 Hedgehog Software, LLC
supabase start && supabase functions serve
login
import { createClient } from "jsr:@supabase/supabase-js@2"; Deno.serve(async () => { const supabase = createClient( Deno.env.get("SUPABASE_URL") ?? "", // Deno.env.get("SUPABASE_ANON_KEY") ?? "", Deno.env.get("SUPABASE_SERVICE_ROLE_KEY") ?? "", ); const email = "email@example.com"; const { data, error } = await supabase.auth.admin.generateLink({ type: "magiclink", email, options: { redirectTo: "http://localhost:3000/confirm", }, }); console.log({ data, error }); return new Response( JSON.stringify({ url: `${data?.properties?.action_link}/confirm&email=${ encodeURIComponent(email) }`, }), { headers: { "Content-Type": "application/json" } }, ); });
user
useSupabaseUser
null
confirm.vue
<script setup> const user = useSupabaseUser(); watch(() => user.value, () => { if (user.value) { navigateTo('/'); } }); </script> <template> <div> Redirecting... </div> </template>
config.toml
additional_redirect_urls = ["https://127.0.0.1:3000","http://127.0.0.1:3000/inloggen","http://127.0.0.1:3000/confirm"]