diff options
| author | Alex Pooley (@zuedev) <zuedev@gmail.com> | 2026-05-13 16:36:35 +0100 |
|---|---|---|
| committer | Alex Pooley (@zuedev) <zuedev@gmail.com> | 2026-05-13 16:36:35 +0100 |
| commit | 5c834e269bfff00b92ee63862cbbc7165743de9e (patch) | |
| tree | be15791166e572b246dd7a4adba0cf66d3bffe08 /communities/red-right-hand/174bg.net/src/app | |
| parent | 7dd09b51c733532ecb54951237f94368dd11badd (diff) | |
| download | unnamed-group-5c834e269bfff00b92ee63862cbbc7165743de9e.tar unnamed-group-5c834e269bfff00b92ee63862cbbc7165743de9e.tar.gz unnamed-group-5c834e269bfff00b92ee63862cbbc7165743de9e.tar.bz2 unnamed-group-5c834e269bfff00b92ee63862cbbc7165743de9e.tar.xz unnamed-group-5c834e269bfff00b92ee63862cbbc7165743de9e.zip | |
add better-auth
Diffstat (limited to 'communities/red-right-hand/174bg.net/src/app')
3 files changed, 68 insertions, 0 deletions
diff --git a/communities/red-right-hand/174bg.net/src/app/api/auth/[...all]/route.js b/communities/red-right-hand/174bg.net/src/app/api/auth/[...all]/route.js new file mode 100644 index 0000000..2aabedd --- /dev/null +++ b/communities/red-right-hand/174bg.net/src/app/api/auth/[...all]/route.js @@ -0,0 +1,4 @@ +import { auth } from "@/auth"; +import { toNextJsHandler } from "better-auth/next-js"; + +export const { POST, GET } = toNextJsHandler(auth); diff --git a/communities/red-right-hand/174bg.net/src/app/login/page.js b/communities/red-right-hand/174bg.net/src/app/login/page.js new file mode 100644 index 0000000..b2b1ea8 --- /dev/null +++ b/communities/red-right-hand/174bg.net/src/app/login/page.js @@ -0,0 +1,51 @@ +"use client"; + +import { Suspense, useEffect, useState } from "react"; +import { useSearchParams } from "next/navigation"; +import { authClient } from "@/lib/auth-client"; + +function LoginRedirect() { + const searchParams = useSearchParams(); + const callbackUrl = searchParams.get("callbackUrl") ?? "/secure"; + const [error, setError] = useState(null); + + const signIn = () => { + authClient.signIn + .social({ + provider: "discord", + callbackURL: callbackUrl, + }) + .then(({ error }) => { + if (error) setError(error.message ?? "Sign-in failed"); + }); + }; + + useEffect(() => { + signIn(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + if (error) { + return ( + <div> + <p>Error: {error}</p> + <button onClick={signIn}>Retry</button> + </div> + ); + } + + return ( + <div> + <p>Redirecting to Discord...</p> + <button onClick={signIn}>Click here if nothing happens</button> + </div> + ); +} + +export default function LoginPage() { + return ( + <Suspense fallback={<p>Loading...</p>}> + <LoginRedirect /> + </Suspense> + ); +} diff --git a/communities/red-right-hand/174bg.net/src/app/secure/page.js b/communities/red-right-hand/174bg.net/src/app/secure/page.js new file mode 100644 index 0000000..27312b7 --- /dev/null +++ b/communities/red-right-hand/174bg.net/src/app/secure/page.js @@ -0,0 +1,13 @@ +import { auth } from "@/auth"; +import { headers } from "next/headers"; + +export default async function SecurePage() { + const session = await auth.api.getSession({ headers: await headers() }); + + return ( + <main> + <h1>Secure Area</h1> + <p>Welcome, {session?.user?.name ?? session?.user?.email}!</p> + </main> + ); +} |
