diff --git a/supabase/migrations/20251012174240_5310dfde-5bd5-4fc0-82ce-93a8fac99807.sql b/supabase/migrations/20251012174240_5310dfde-5bd5-4fc0-82ce-93a8fac99807.sql new file mode 100644 index 00000000..241ef3a5 --- /dev/null +++ b/supabase/migrations/20251012174240_5310dfde-5bd5-4fc0-82ce-93a8fac99807.sql @@ -0,0 +1,52 @@ +-- Fix the trigger function to use the anon key directly +CREATE OR REPLACE FUNCTION public.notify_moderators_on_new_submission() +RETURNS TRIGGER +LANGUAGE plpgsql +SECURITY DEFINER +SET search_path = public +AS $$ +DECLARE + submitter_profile record; + function_url text; + anon_key text; +BEGIN + -- Get submitter's username or display name + SELECT username, display_name INTO submitter_profile + FROM public.profiles + WHERE user_id = NEW.user_id; + + -- Build the function URL + function_url := 'https://ydvtmnrszybqnbcqbdcy.supabase.co/functions/v1/notify-moderators-submission'; + + -- Use the public anon key (this is safe, it's already public in the frontend) + anon_key := 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InlkdnRtbnJzenlicW5iY3FiZGN5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTgzMjYzNTYsImV4cCI6MjA3MzkwMjM1Nn0.DM3oyapd_omP5ZzIlrT0H9qBsiQBxBRgw2tYuqgXKX4'; + + -- Call edge function asynchronously (doesn't block submission) + -- Using pg_net to make HTTP request without blocking + PERFORM net.http_post( + url := function_url, + headers := jsonb_build_object( + 'Content-Type', 'application/json', + 'Authorization', 'Bearer ' || anon_key, + 'apikey', anon_key + ), + body := jsonb_build_object( + 'submission_id', NEW.id, + 'submission_type', NEW.submission_type, + 'submitter_name', COALESCE(submitter_profile.display_name, submitter_profile.username, 'Anonymous'), + 'action', COALESCE((NEW.content->>'action')::text, 'create') + ) + ); + + RETURN NEW; +EXCEPTION + WHEN OTHERS THEN + -- Log error but don't fail the submission + RAISE WARNING 'Failed to notify moderators: %', SQLERRM; + RETURN NEW; +END; +$$; + +-- Add comment +COMMENT ON FUNCTION public.notify_moderators_on_new_submission() IS + 'Automatically notifies all moderators via Novu when a new submission enters the moderation queue. Fixed to use anon key directly.'; \ No newline at end of file