From 12e87c5339920b3f64aff0186aa87584b9b37084 Mon Sep 17 00:00:00 2001 From: sirin Date: Fri, 30 Aug 2024 21:00:18 +0700 Subject: [PATCH] Add callback and error auth route + rename login to auth path --- src/app/auth/callback/route.ts | 24 ++++++++++++++++++++++++ src/app/auth/error/page.tsx | 3 +++ src/app/{login => auth}/page.tsx | 13 +++++-------- 3 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 src/app/auth/callback/route.ts create mode 100644 src/app/auth/error/page.tsx rename src/app/{login => auth}/page.tsx (73%) diff --git a/src/app/auth/callback/route.ts b/src/app/auth/callback/route.ts new file mode 100644 index 0000000..451854e --- /dev/null +++ b/src/app/auth/callback/route.ts @@ -0,0 +1,24 @@ +import { createSupabaseClient } from "@/lib/supabase/serverComponentClient"; +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const { searchParams, origin } = new URL(request.url); + + const code = searchParams.get("code"); + + // if "next" is in param, use it in the redirect URL + const next = searchParams.get("next") ?? "/"; + + if (code) { + const supabase = createSupabaseClient(); + + const { error } = await supabase.auth.exchangeCodeForSession(code); + + if (!error) { + return NextResponse.redirect(`${origin}${next}`); + } + } + + // return the user to an error page with instructions + return NextResponse.redirect(`${origin}/auth/error`); +} diff --git a/src/app/auth/error/page.tsx b/src/app/auth/error/page.tsx new file mode 100644 index 0000000..7552b02 --- /dev/null +++ b/src/app/auth/error/page.tsx @@ -0,0 +1,3 @@ +export default function AuthError() { + return
Authentication Error
; +} diff --git a/src/app/login/page.tsx b/src/app/auth/page.tsx similarity index 73% rename from src/app/login/page.tsx rename to src/app/auth/page.tsx index 597d993..f5f5e10 100644 --- a/src/app/login/page.tsx +++ b/src/app/auth/page.tsx @@ -2,6 +2,9 @@ import Image from "next/image"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardFooter, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { LoginButton } from "@/components/auth/loginButton"; +import { LogoutButton } from "@/components/auth/logoutButton"; + export default function Login() { return (

Continue With

- - + +
By signing up, you agree to the Terms of Service and acknowledge you’ve read our Privacy Policy.