UNPKG

nuxt-supabase-team-auth

Version:

Drop-in Nuxt 3 module for team-based authentication with Supabase

39 lines (38 loc) 1.45 kB
import { createError } from "h3"; export async function createSessionFromMagicLink(adminClient, email, metadata) { try { console.log(`[MagicLinkSession] Generating magic link for ${email}`); const { data: magicLinkData, error: magicLinkError } = await adminClient.auth.admin.generateLink({ type: "magiclink", email, options: metadata ? { data: metadata } : void 0 }); if (magicLinkError || !magicLinkData.properties?.hashed_token) { console.error("[MagicLinkSession] Failed to generate magic link:", magicLinkError); throw createError({ statusCode: 500, message: "Failed to generate authentication link" }); } console.log("[MagicLinkSession] Magic link generated, verifying OTP..."); const { data: sessionData, error: verifyError } = await adminClient.auth.verifyOtp({ token_hash: magicLinkData.properties.hashed_token, type: "magiclink" }); if (verifyError || !sessionData.session) { console.error("[MagicLinkSession] Failed to verify OTP:", verifyError); throw createError({ statusCode: 500, message: "Failed to create authentication session" }); } console.log("[MagicLinkSession] Session created successfully"); return { session: sessionData.session, user: sessionData.user }; } catch (error) { console.error("[MagicLinkSession] Unexpected error:", error); throw error; } }