TeamVis Self-Host-Bundle v0.31.0
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
-- Vertraulicher Zusatz-Link ("Trusted-Link") pro Mitarbeiter.
|
||||
--
|
||||
-- Idee: Die öffentliche Karte (/<slug>) zeigt nur Festnetz (wie show_mobile=false
|
||||
-- vorgibt). Wer zusätzlich ein gültiges Token (?k=…) mitbringt, sieht auch die
|
||||
-- Mobilnummer — auf der Karte UND in der vCard. Token kann ablaufen, jeder
|
||||
-- Zugriff mit Token wird geloggt.
|
||||
|
||||
-- 1) Token-Spalten auf employees
|
||||
alter table public.employees
|
||||
add column if not exists trusted_token text,
|
||||
add column if not exists trusted_token_expires_at timestamptz,
|
||||
add column if not exists trusted_token_created_at timestamptz;
|
||||
|
||||
-- Eindeutigkeit, aber nur wenn gesetzt — NULL-Werte dürfen mehrfach vorkommen.
|
||||
drop index if exists public.employees_trusted_token_key;
|
||||
create unique index employees_trusted_token_key
|
||||
on public.employees(trusted_token)
|
||||
where trusted_token is not null;
|
||||
|
||||
-- 2) Audit-Log-Tabelle
|
||||
create table if not exists public.trusted_access_log (
|
||||
id uuid primary key default gen_random_uuid(),
|
||||
employee_id uuid not null references public.employees(id) on delete cascade,
|
||||
accessed_at timestamptz not null default now(),
|
||||
route text not null, -- 'card' | 'vcard'
|
||||
ip text,
|
||||
user_agent text
|
||||
);
|
||||
|
||||
create index if not exists trusted_access_log_employee_id_idx
|
||||
on public.trusted_access_log (employee_id, accessed_at desc);
|
||||
|
||||
-- 3) RLS: Tabelle komplett zu für anon. Nur service-role (Admin-Server-Code)
|
||||
-- liest und schreibt.
|
||||
alter table public.trusted_access_log enable row level security;
|
||||
|
||||
drop policy if exists "no_anon_access_trusted_access_log" on public.trusted_access_log;
|
||||
-- Absichtlich KEINE anon-Policy → Default deny. Service-Role umgeht RLS.
|
||||
Reference in New Issue
Block a user