From 8d9b60def052aeb98be5a963ea3ee8ea12c6ee77 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Tue, 23 Dec 2025 15:25:07 +0100 Subject: [PATCH] Working supabase structure --- src/actions/auth.ts | 29 +++++++++++++++++++++++++++++ src/actions/supa.ts | 24 ++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/actions/auth.ts create mode 100644 src/actions/supa.ts diff --git a/src/actions/auth.ts b/src/actions/auth.ts new file mode 100644 index 0000000..3b78532 --- /dev/null +++ b/src/actions/auth.ts @@ -0,0 +1,29 @@ +"use server"; + +import createClient from "@/actions/supa"; +import getSession from "./get-session"; + +/** + * Request a temporary relay token for a DM node or server. + */ +export async function authRelay(server_id: string) { + const supabase = await createClient(); + + const user_id = await getSession(); + + if (!user_id) { + throw new Error("Invalid user id"); + } + + const { data: relayToken, error: errorRelay } = await supabase + .from("server_auth") + .insert({ user_id: user_id, server_id }) + .select("key") + .maybeSingle(); + + if (!relayToken || errorRelay) { + throw new Error("Failed to create relay token"); + } + + return relayToken.key as string; +} diff --git a/src/actions/supa.ts b/src/actions/supa.ts new file mode 100644 index 0000000..5c7f41e --- /dev/null +++ b/src/actions/supa.ts @@ -0,0 +1,24 @@ +import { cookies } from "next/headers"; +import { createServerClient } from "@supabase/ssr"; + +export default async function createClient() { + const cookieStore = await cookies(); + + return createServerClient( + process.env.NEXT_PUBLIC_SUPABASE_URL!, + process.env.SUPABASE_SERVICE_ROLE_KEY!, + { + cookies: { + get(name) { + return cookieStore.get(name)?.value; + }, + set(name, value) { + cookieStore.set(name, value); + }, + remove(name) { + cookieStore.delete(name); + }, + }, + } + ); +}