ESC
NextStarterAI logo
Menu
On this page

Features > Magic Link

Setup


1. Supabase manages Magic Links on your behalf automatically.


2. You can directly start authenticating your users on frontend side just like the code sample below:


/app/components/SignInButton.ts
1 2 const handleOtpSignup = async (options: { 3 type: string; 4 provider?: Provider; 5 }) => { 6 setIsLoading(true); 7 8 try { 9 const { type, provider } = options; 10 const redirectURL = window.location.origin + "/api/auth/callback"; 11 12 await supabase.auth.signInWithOtp({ 13 email, 14 options: { 15 emailRedirectTo: redirectURL, 16 }, 17 }); 18 toast.success("Check your emails!"); 19 } catch (error) { 20 console.log(error); 21 } finally { 22 setIsLoading(false); 23 } 24 };

3. When you need to check the authentication status of your users on backend, you can do it like the code below:


/app/api/example/route.ts
1 2 import { createRouteHandlerClient } from "@supabase/auth-helpers-nextjs"; 3 import { NextResponse } from "next/server"; 4 import { cookies } from "next/headers"; 5 6 export const dynamic = "force-dynamic"; 7 8 export async function POST(req) { 9 const supabase = createRouteHandlerClient({ cookies }); 10 const { data } = await supabase.auth.getSession(); 11 const { session } = data; 12 13 // Check authentication by the object returned by Supabase 14 if (session) { 15 const body = await req.json(); 16 // you can do what you need to do with the authenticated user 17 } else { 18 // Unauthenticated 19 NextResponse.json({ error: "Not signed in" }, { status: 401 }); 20 } 21 }