signature/supabase/migrations/003_signatures.sql

75 lines
2.2 KiB
SQL

-- Table pour stocker les signatures créées par l'admin
-- (différent de user_signatures qui est 1 signature par utilisateur)
CREATE TABLE IF NOT EXISTS signatures (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
created_by UUID REFERENCES auth.users(id) ON DELETE CASCADE,
-- Infos personnelles
first_name TEXT NOT NULL,
last_name TEXT,
job_title TEXT,
company TEXT DEFAULT 'Navier Instruments',
-- Contact
email TEXT,
phone TEXT,
mobile TEXT,
website TEXT DEFAULT 'www.navier-instruments.com',
address TEXT,
-- Images
photo_url TEXT,
logo_url TEXT DEFAULT '/preview.webp',
-- Réseaux sociaux
linkedin TEXT,
twitter TEXT,
facebook TEXT,
instagram TEXT,
-- Style
primary_color TEXT DEFAULT '#F5A623',
secondary_color TEXT DEFAULT '#1a1a2e',
accent_color TEXT DEFAULT '#F5A623',
photo_shape TEXT DEFAULT 'hexagon',
style_template TEXT DEFAULT 'geometric',
-- Bannière
banner_url TEXT,
banner_link TEXT,
-- Métadonnées
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Index
CREATE INDEX IF NOT EXISTS idx_signatures_created_by ON signatures(created_by);
CREATE INDEX IF NOT EXISTS idx_signatures_name ON signatures(first_name, last_name);
-- Trigger pour updated_at
DROP TRIGGER IF EXISTS signatures_updated_at ON signatures;
CREATE TRIGGER signatures_updated_at
BEFORE UPDATE ON signatures
FOR EACH ROW
EXECUTE FUNCTION update_updated_at();
-- RLS
ALTER TABLE signatures ENABLE ROW LEVEL SECURITY;
-- Tout utilisateur authentifié peut créer des signatures
CREATE POLICY "Users peuvent creer signatures" ON signatures
FOR INSERT WITH CHECK (auth.uid() = created_by);
-- Users peuvent voir leurs propres signatures
CREATE POLICY "Users peuvent voir leurs signatures" ON signatures
FOR SELECT USING (auth.uid() = created_by);
-- Users peuvent modifier leurs propres signatures
CREATE POLICY "Users peuvent modifier leurs signatures" ON signatures
FOR UPDATE USING (auth.uid() = created_by);
-- Users peuvent supprimer leurs propres signatures
CREATE POLICY "Users peuvent supprimer leurs signatures" ON signatures
FOR DELETE USING (auth.uid() = created_by);