-- Durcit photobooth.generate_unique_slug : le linter de sécurité Supabase -- signale un search_path mutable (absent) sur cette fonction, introduite par -- 20260918100000_create_event_rpc.sql. Même remède que le reste du projet -- (public.create_event fixe déjà search_path) : figer explicitement, pour -- empêcher qu'un search_path attaquant (ex: schéma temporaire malveillant) -- ne fasse résoudre unaccent() ou photobooth.events vers autre chose que -- prévu. create or replace function photobooth.generate_unique_slug(p_source text) returns text language plpgsql set search_path = photobooth, extensions, pg_temp as $$ declare v_base_slug text; v_candidate text; v_suffix integer := 1; v_max_attempts constant integer := 1000; begin v_base_slug := lower(trim(both '-' from regexp_replace(extensions.unaccent(coalesce(p_source, '')), '[^a-zA-Z0-9]+', '-', 'g') )); if v_base_slug = '' then v_base_slug := 'evenement'; end if; v_candidate := v_base_slug; while exists (select 1 from photobooth.events where slug = v_candidate) loop v_suffix := v_suffix + 1; v_candidate := v_base_slug || '-' || v_suffix; if v_suffix > v_max_attempts then raise exception 'slug_generation_failed' using errcode = 'P0001', detail = format('Impossible de générer un slug unique pour "%s" après %s tentatives.', p_source, v_max_attempts); end if; end loop; return v_candidate; end; $$;