MIGRATION VERS GITEA
This commit is contained in:
commit
5f9d991c15
333 files changed
+108514
No files matched your search
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,7 @@
|
||||
-- MIGRATION : Ajout de la colonne quais_hall (JSONB) dans la table gares
|
||||
|
||||
ALTER TABLE public.gares
|
||||
ADD COLUMN IF NOT EXISTS quais_hall JSONB DEFAULT '{"hall": {}}'::jsonb;
|
||||
|
||||
COMMENT ON COLUMN public.gares.quais_hall IS
|
||||
'Association des quais aux halls sous forme JSON : {"hall": {"Nom du Hall": ["Quai 1", "Quai 2"]}}';
|
||||
@@ -0,0 +1,31 @@
|
||||
-- Migration: 20260611000000_secure_all_tables.sql
|
||||
-- Description: Enable RLS on all public tables and restrict INSERT/UPDATE/DELETE to authenticated users.
|
||||
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
FOR r IN SELECT tablename FROM pg_tables WHERE schemaname = 'public'
|
||||
LOOP
|
||||
-- Enable RLS
|
||||
EXECUTE 'ALTER TABLE public.' || quote_ident(r.tablename) || ' ENABLE ROW LEVEL SECURITY;';
|
||||
|
||||
-- Clean up existing potentially insecure policies to be sure
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Public read access" ON public.' || quote_ident(r.tablename) || ';';
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Enable insert for authenticated users only" ON public.' || quote_ident(r.tablename) || ';';
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Enable update for authenticated users only" ON public.' || quote_ident(r.tablename) || ';';
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Enable delete for authenticated users only" ON public.' || quote_ident(r.tablename) || ';';
|
||||
|
||||
-- Read policy (SELECT): Allow public read
|
||||
EXECUTE 'CREATE POLICY "Public read access" ON public.' || quote_ident(r.tablename) || ' FOR SELECT USING (true);';
|
||||
|
||||
-- Insert policy: Allow anon (app uses custom auth, no Supabase Auth)
|
||||
EXECUTE 'CREATE POLICY "Public insert access" ON public.' || quote_ident(r.tablename) || ' FOR INSERT WITH CHECK (true);';
|
||||
|
||||
-- Update policy: Allow anon
|
||||
EXECUTE 'CREATE POLICY "Public update access" ON public.' || quote_ident(r.tablename) || ' FOR UPDATE USING (true);';
|
||||
|
||||
-- Delete policy: Prevent hard deletion for everyone (prevents third party deletion)
|
||||
EXECUTE 'CREATE POLICY "Prevent hard deletion" ON public.' || quote_ident(r.tablename) || ' FOR DELETE USING (false);';
|
||||
END LOOP;
|
||||
END $$;
|
||||
@@ -0,0 +1,27 @@
|
||||
-- Migration: 20260611000001_fix_secure_all_tables.sql
|
||||
-- Description: Fix RLS policies to allow public insert/update since app uses custom auth, but strictly prevent delete.
|
||||
|
||||
DO $$
|
||||
DECLARE
|
||||
r RECORD;
|
||||
BEGIN
|
||||
FOR r IN SELECT tablename FROM pg_tables WHERE schemaname = 'public'
|
||||
LOOP
|
||||
-- Clean up the overly restrictive policies from previous migration
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Enable insert for authenticated users only" ON public.' || quote_ident(r.tablename) || ';';
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Enable update for authenticated users only" ON public.' || quote_ident(r.tablename) || ';';
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Enable delete for authenticated users only" ON public.' || quote_ident(r.tablename) || ';';
|
||||
|
||||
-- Insert policy: Allow anon (app uses custom auth, no Supabase Auth)
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Public insert access" ON public.' || quote_ident(r.tablename) || ';';
|
||||
EXECUTE 'CREATE POLICY "Public insert access" ON public.' || quote_ident(r.tablename) || ' FOR INSERT WITH CHECK (true);';
|
||||
|
||||
-- Update policy: Allow anon
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Public update access" ON public.' || quote_ident(r.tablename) || ';';
|
||||
EXECUTE 'CREATE POLICY "Public update access" ON public.' || quote_ident(r.tablename) || ' FOR UPDATE USING (true);';
|
||||
|
||||
-- Delete policy: Prevent hard deletion for everyone (prevents third party deletion)
|
||||
EXECUTE 'DROP POLICY IF EXISTS "Prevent hard deletion" ON public.' || quote_ident(r.tablename) || ';';
|
||||
EXECUTE 'CREATE POLICY "Prevent hard deletion" ON public.' || quote_ident(r.tablename) || ' FOR DELETE USING (false);';
|
||||
END LOOP;
|
||||
END $$;
|
||||
@@ -0,0 +1,10 @@
|
||||
-- ============================================================================
|
||||
-- MIGRATION : types_train — ajout de la colonne "logo_color_url"
|
||||
--
|
||||
-- Ajoute une colonne "logo_color_url" pour stocker l'URL du logo en couleur.
|
||||
--
|
||||
-- À exécuter dans : Supabase Dashboard > SQL Editor
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE "public"."types_train"
|
||||
ADD COLUMN IF NOT EXISTS "logo_color_url" text;
|
||||
@@ -0,0 +1,32 @@
|
||||
-- ============================================================================
|
||||
-- MIGRATION : info_gares — gare_ids uuid[] + ligne_ids uuid[]
|
||||
--
|
||||
-- Remplace les colonnes scalaires gare_id / ligne_id par des colonnes tableau
|
||||
-- afin d'autoriser plusieurs gares et plusieurs lignes par info.
|
||||
--
|
||||
-- À exécuter dans : Supabase Dashboard > SQL Editor
|
||||
-- ============================================================================
|
||||
|
||||
-- 1. Ajouter les nouvelles colonnes tableaux (nullables, par défaut vide)
|
||||
ALTER TABLE "public"."info_gares"
|
||||
ADD COLUMN IF NOT EXISTS "gare_ids" uuid[] NOT NULL DEFAULT '{}',
|
||||
ADD COLUMN IF NOT EXISTS "ligne_ids" uuid[] NOT NULL DEFAULT '{}';
|
||||
|
||||
-- 2. Migrer les données existantes depuis les colonnes scalaires
|
||||
UPDATE "public"."info_gares"
|
||||
SET
|
||||
gare_ids = CASE WHEN gare_id IS NOT NULL THEN ARRAY[gare_id] ELSE '{}' END,
|
||||
ligne_ids = CASE WHEN ligne_id IS NOT NULL THEN ARRAY[ligne_id] ELSE '{}' END
|
||||
WHERE deleted_at IS NULL;
|
||||
|
||||
-- 3. Supprimer les anciennes colonnes scalaires
|
||||
-- (décommentez les lignes ci-dessous après avoir vérifié la migration)
|
||||
-- ALTER TABLE "public"."info_gares" DROP COLUMN IF EXISTS "gare_id";
|
||||
-- ALTER TABLE "public"."info_gares" DROP COLUMN IF EXISTS "ligne_id";
|
||||
|
||||
-- NOTE : les colonnes gare_id / ligne_id sont conservées pour l'instant.
|
||||
-- Après validation, décommentez le bloc DROP COLUMN ci-dessus et ré-exécutez.
|
||||
|
||||
-- 4. Index GIN pour de meilleures performances sur les requêtes @> (contient)
|
||||
CREATE INDEX IF NOT EXISTS idx_info_gares_gare_ids ON "public"."info_gares" USING GIN (gare_ids);
|
||||
CREATE INDEX IF NOT EXISTS idx_info_gares_ligne_ids ON "public"."info_gares" USING GIN (ligne_ids);
|
||||
@@ -0,0 +1,12 @@
|
||||
-- ============================================================================
|
||||
-- MIGRATION : info_gares — ajout de la colonne "type"
|
||||
--
|
||||
-- Ajoute une colonne "type" pour catégoriser les infos gares.
|
||||
-- Les valeurs possibles sont gérées côté applicatif :
|
||||
-- 'Information', 'Avertissement', 'Alerte', 'Urgence', 'Alerte Méteo'
|
||||
--
|
||||
-- À exécuter dans : Supabase Dashboard > SQL Editor
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE "public"."info_gares"
|
||||
ADD COLUMN IF NOT EXISTS "type" text NOT NULL DEFAULT 'Information';
|
||||
@@ -0,0 +1,42 @@
|
||||
-- ============================================================================
|
||||
-- FIX RLS : table info_gares
|
||||
--
|
||||
-- La table info_gares a RLS activé mais aucune policy n'est définie,
|
||||
-- ce qui bloque toutes les opérations (INSERT, UPDATE, DELETE, SELECT).
|
||||
--
|
||||
-- Ce script suit le même pattern que les autres tables du projet
|
||||
-- (menus_regionaux, parametres) : accès ouvert à tous les rôles
|
||||
-- utilisant la clé anon/service (gestion côté application).
|
||||
--
|
||||
-- À exécuter dans : Supabase Dashboard > SQL Editor
|
||||
-- ============================================================================
|
||||
|
||||
-- 1. S'assurer que RLS est bien activé sur la table
|
||||
ALTER TABLE "public"."info_gares" ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- 2. Supprimer les éventuelles policies existantes (idempotent)
|
||||
DROP POLICY IF EXISTS "info_gares_select" ON "public"."info_gares";
|
||||
DROP POLICY IF EXISTS "info_gares_insert" ON "public"."info_gares";
|
||||
DROP POLICY IF EXISTS "info_gares_update" ON "public"."info_gares";
|
||||
DROP POLICY IF EXISTS "info_gares_delete" ON "public"."info_gares";
|
||||
|
||||
-- 3. Créer les 4 policies CRUD (lecture, insertion, modification, suppression)
|
||||
CREATE POLICY "info_gares_select"
|
||||
ON "public"."info_gares"
|
||||
FOR SELECT
|
||||
USING (true);
|
||||
|
||||
CREATE POLICY "info_gares_insert"
|
||||
ON "public"."info_gares"
|
||||
FOR INSERT
|
||||
WITH CHECK (true);
|
||||
|
||||
CREATE POLICY "info_gares_update"
|
||||
ON "public"."info_gares"
|
||||
FOR UPDATE
|
||||
USING (true);
|
||||
|
||||
CREATE POLICY "info_gares_delete"
|
||||
ON "public"."info_gares"
|
||||
FOR DELETE
|
||||
USING (true);
|
||||
Reference in new issue
Block a user