From 86b08b80726c926923419820c58496880218aa7c Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 00:53:02 +0000 Subject: [PATCH] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/lib/payments.functions.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/lib/payments.functions.ts b/src/lib/payments.functions.ts index 6782b5d..f274b17 100644 --- a/src/lib/payments.functions.ts +++ b/src/lib/payments.functions.ts @@ -176,15 +176,10 @@ export const cancelPaymentRequest = createServerFn({ method: "POST" }) export const getPublicPaymentRequest = createServerFn({ method: "GET" }) .inputValidator((data: { id: string }) => data) .handler(async ({ data }) => { - // Use anon-key client; RLS policy "pr_select_public_by_id" allows public reads - const { createClient } = await import("@supabase/supabase-js"); - const url = process.env.SUPABASE_URL; - const anonKey = process.env.SUPABASE_PUBLISHABLE_KEY; - if (!url || !anonKey) throw new Error("Supabase env not configured"); - const sb = createClient(url, anonKey, { - auth: { persistSession: false, autoRefreshToken: false }, - }); - const { data: row } = await sb + // Use service-role client to bypass RLS; return only a strict whitelist + // of non-sensitive fields for the public pay page. + const { supabaseAdmin } = await import("@/integrations/supabase/client.server"); + const { data: row } = await supabaseAdmin .from("payment_requests") .select( "id, recipient_name, description, base_amount_cents, fee_amount_cents, total_amount_cents, currency, status, stripe_checkout_url, paid_at",