diff --git a/shop/app/admin/layout.tsx b/shop/app/admin/layout.tsx index 323b3df..63fb324 100644 --- a/shop/app/admin/layout.tsx +++ b/shop/app/admin/layout.tsx @@ -58,6 +58,14 @@ export default async function AdminLayout({ Benutzer + + + Partner + + + + Firmen +
Einstellungen diff --git a/shop/supabase/migrations/20260624100000_create_companies_table.sql b/shop/supabase/migrations/20260624100000_create_companies_table.sql index 8cdeb83..cb47087 100644 --- a/shop/supabase/migrations/20260624100000_create_companies_table.sql +++ b/shop/supabase/migrations/20260624100000_create_companies_table.sql @@ -1,31 +1,51 @@ --- Migration: companies table + company_id in users +-- Migration: companies and partners tables with relationships --- 1. Tabelle companies erstellen -CREATE TABLE IF NOT EXISTS public.partners ( +-- 1. Create companies table +CREATE TABLE IF NOT EXISTS public.companies ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name TEXT NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ); --- RLS aktivieren +-- 2. Create partners table with optional company reference +CREATE TABLE IF NOT EXISTS public.partners ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + name TEXT NOT NULL, + company_id UUID REFERENCES public.companies(id) ON DELETE SET NULL, + created_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +-- Enable RLS on both tables ALTER TABLE public.companies ENABLE ROW LEVEL SECURITY; +ALTER TABLE public.partners ENABLE ROW LEVEL SECURITY; --- Policies -DROP POLICY IF EXISTS "Admins und Partner lesen Partner" ON public.partners; -DROP POLICY IF EXISTS "Service role kann alles" ON public.partners; +-- Policies for companies +DROP POLICY IF EXISTS "Admins und Unternehmen lesen" ON public.companies; +CREATE POLICY "Admins und Unternehmen lesen" + ON public.companies FOR SELECT + USING (auth.role() = 'authenticated'); -CREATE POLICY "Admins und Partner lesen Partner" +DROP POLICY IF EXISTS "Service role kann alles Unternehmen" ON public.companies; +CREATE POLICY "Service role kann alles Unternehmen" + ON public.companies FOR ALL + USING (true) + WITH CHECK (true); + +-- Policies for partners +DROP POLICY IF EXISTS "Admins und Partner lesen" ON public.partners; +CREATE POLICY "Admins und Partner lesen" ON public.partners FOR SELECT USING (auth.role() = 'authenticated'); -CREATE POLICY "Service role kann alles" +DROP POLICY IF EXISTS "Service role kann alles Partner" ON public.partners; +CREATE POLICY "Service role kann alles Partner" ON public.partners FOR ALL USING (true) WITH CHECK (true); --- 2. company_id zu public.users hinzufügen +-- 3. Add company_id to users (instead of partner_id) ALTER TABLE public.users - ADD COLUMN IF NOT EXISTS partner_id UUID REFERENCES public.partners(id) ON DELETE SET NULL; + ADD COLUMN IF NOT EXISTS company_id UUID REFERENCES public.companies(id) ON DELETE SET NULL; --- Reload Schema Cache +-- Reload schema cache NOTIFY pgrst, 'reload schema';