-- K1 fix: Trusted-Token + Reveal-Felder nicht über anon-API auslesbar. -- ==================================================================== -- bisher: RLS auf public.employees erlaubte anon-SELECT auf alle -- Spalten (inkl. trusted_token, trusted_reveal). Damit war der gesamte -- Trusted-Link-Mechanismus wirkungslos — jeder konnte den Token via -- /rest/v1/employees auslesen. -- -- neu: column-level grants. Die anon-Rolle darf nur safe-Spalten -- selektieren. Postgres lehnt SELECT mit verbotener Spalte direkt ab. -- Die App-Schicht (lib/employees.ts) selektiert deshalb nur die -- safe-Spalten. Token-Validierung läuft ausschließlich server-side -- mit Service-Role-Key. -- Policy bleibt unverändert: anon liest nur aktive Mitarbeiter. drop policy if exists "public_read_active_employees" on public.employees; create policy "public_read_active_employees" on public.employees for select to anon using (active = true); -- Column-level grants: zuerst alle Rechte entziehen, dann gezielt -- nur die unkritischen Spalten freigeben. Trusted-Token-Felder bleiben -- für anon unzugänglich. revoke all on public.employees from anon; grant select (id, slug, academic_title, qualification, first_name, last_name, position, company, address, street, postal_code, city, email, phone_office, phone_mobile, website, linkedin_url, xing_url, calendar_url, photo_url, show_mobile, show_linkedin, show_xing, active, org_unit_id, created_at, updated_at) on public.employees to anon;