mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 01:40:01 +00:00
183fe0a93c
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
50 lines
1.3 KiB
PL/PgSQL
50 lines
1.3 KiB
PL/PgSQL
DROP FUNCTION IF EXISTS public.verify_board_invoice_insert_policy(uuid, uuid);
|
|
|
|
CREATE FUNCTION public.verify_board_invoice_insert_policy(_user_id uuid, _association_id uuid)
|
|
RETURNS jsonb
|
|
LANGUAGE plpgsql
|
|
SECURITY DEFINER
|
|
SET search_path = public
|
|
AS $$
|
|
DECLARE
|
|
v_inserted_id uuid;
|
|
BEGIN
|
|
IF NOT public.is_board_member_of_association(_user_id, _association_id) THEN
|
|
RETURN jsonb_build_object('ok', false, 'reason', 'not_board_member_for_association');
|
|
END IF;
|
|
|
|
INSERT INTO public.invoices (
|
|
association_id,
|
|
vendor_name,
|
|
invoice_number,
|
|
amount,
|
|
status,
|
|
issue_date,
|
|
due_date,
|
|
description,
|
|
created_by,
|
|
raw_pdf_url,
|
|
line_items
|
|
) VALUES (
|
|
_association_id,
|
|
'RLS Verification Vendor',
|
|
'RLS-VERIFY-' || to_char(clock_timestamp(), 'YYYYMMDDHH24MISSMS'),
|
|
1.23,
|
|
'pending',
|
|
CURRENT_DATE,
|
|
CURRENT_DATE,
|
|
'Automatic RLS verification test',
|
|
_user_id,
|
|
'https://example.com/rls-verification.pdf',
|
|
'[]'::jsonb
|
|
)
|
|
RETURNING id INTO v_inserted_id;
|
|
|
|
DELETE FROM public.invoices WHERE id = v_inserted_id;
|
|
RETURN jsonb_build_object('ok', true);
|
|
EXCEPTION WHEN OTHERS THEN
|
|
RETURN jsonb_build_object('ok', false, 'reason', SQLERRM, 'state', SQLSTATE);
|
|
END;
|
|
$$;
|
|
|
|
GRANT EXECUTE ON FUNCTION public.verify_board_invoice_insert_policy(uuid, uuid) TO authenticated; |