mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 09:50:01 +00:00
Add ACMCC app source, Supabase backend, and project config
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
|
||||
-- Add void tracking columns
|
||||
ALTER TABLE public.signature_envelopes
|
||||
ADD COLUMN IF NOT EXISTS voided_at timestamptz,
|
||||
ADD COLUMN IF NOT EXISTS voided_reason text,
|
||||
ADD COLUMN IF NOT EXISTS voided_by uuid;
|
||||
|
||||
-- Signature field placements
|
||||
CREATE TABLE IF NOT EXISTS public.signature_fields (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
envelope_id uuid NOT NULL REFERENCES public.signature_envelopes(id) ON DELETE CASCADE,
|
||||
recipient_id uuid NOT NULL REFERENCES public.signature_recipients(id) ON DELETE CASCADE,
|
||||
field_type text NOT NULL CHECK (field_type IN ('signature', 'date', 'name', 'initials')),
|
||||
page_number integer NOT NULL DEFAULT 1,
|
||||
x_ratio numeric NOT NULL, -- 0..1 from left
|
||||
y_ratio numeric NOT NULL, -- 0..1 from top (UI coord)
|
||||
width_ratio numeric NOT NULL DEFAULT 0.20,
|
||||
height_ratio numeric NOT NULL DEFAULT 0.05,
|
||||
required boolean NOT NULL DEFAULT true,
|
||||
created_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_signature_fields_envelope ON public.signature_fields(envelope_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_signature_fields_recipient ON public.signature_fields(recipient_id);
|
||||
|
||||
ALTER TABLE public.signature_fields ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
CREATE POLICY "Staff manage signature fields"
|
||||
ON public.signature_fields
|
||||
FOR ALL
|
||||
TO authenticated
|
||||
USING (public.has_role(auth.uid(), 'admin'::public.app_role) OR public.has_role(auth.uid(), 'manager'::public.app_role))
|
||||
WITH CHECK (public.has_role(auth.uid(), 'admin'::public.app_role) OR public.has_role(auth.uid(), 'manager'::public.app_role));
|
||||
|
||||
CREATE POLICY "Recipients view their fields"
|
||||
ON public.signature_fields
|
||||
FOR SELECT
|
||||
USING (EXISTS (
|
||||
SELECT 1 FROM public.signature_recipients r
|
||||
WHERE r.id = signature_fields.recipient_id
|
||||
AND (r.user_id = auth.uid() OR lower(r.email) = lower(auth.email()))
|
||||
));
|
||||
Reference in New Issue
Block a user