TeamVis Self-Host-Bundle v0.31.0
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
-- Empfang-Kiosk-Modus: separates Auth-Modell fuer das Tablet am
|
||||
-- Empfangstresen — KEIN Admin-Zugriff.
|
||||
-- ====================================================================
|
||||
-- Idee:
|
||||
-- * Admin legt einen Kiosk an (Name, z.B. "Empfangstresen Hauptgebaeude"),
|
||||
-- bekommt einmalig eine URL `https://teamvis.de/empfang/k/<token>`.
|
||||
-- * Diese URL wird einmal auf dem Tablet geoeffnet → Server validiert
|
||||
-- Token gegen `token_hash`, setzt langlebiges `kiosk_session`-Cookie
|
||||
-- (iron-session, 1 Jahr) und redirected auf `/empfang`.
|
||||
-- * Das Tablet bleibt damit dauerhaft im Empfangs-Modus, kann aber
|
||||
-- ueber das Cookie nichts anderes als die Empfang-Action.
|
||||
-- * Token wird nicht im Klartext gespeichert — bei Verlust einfach
|
||||
-- widerrufen (`revoked_at` setzen) und neuen Kiosk anlegen.
|
||||
|
||||
create table if not exists public.reception_kiosks (
|
||||
id uuid primary key default gen_random_uuid(),
|
||||
name text not null,
|
||||
-- Slug zum Anzeigen in Admin-UI / Logs (z.B. "empfang-haupt").
|
||||
-- Eindeutig, klein, ohne Leerzeichen — generiert aus dem Namen.
|
||||
slug text not null unique,
|
||||
-- SHA256-Hex des Tokens. Token selbst (Base64URL ~32B) wird nur
|
||||
-- bei der Erstellung an die Admin-UI zurueckgegeben und sofort
|
||||
-- in die Aktivierungs-URL eingebaut. Danach nicht mehr abrufbar.
|
||||
token_hash text not null,
|
||||
created_at timestamptz not null default now(),
|
||||
-- Wann zuletzt ein Request mit dem Kiosk-Cookie validiert wurde.
|
||||
-- Hilfreich um vergessene/inaktive Tablets zu erkennen.
|
||||
last_used_at timestamptz,
|
||||
-- Soft-Revoke. Eintraege bleiben fuer Audit-Zwecke erhalten;
|
||||
-- ein widerrufener Kiosk akzeptiert kein Cookie und keine URL mehr.
|
||||
revoked_at timestamptz
|
||||
);
|
||||
|
||||
create index if not exists reception_kiosks_token_hash_idx
|
||||
on public.reception_kiosks (token_hash)
|
||||
where revoked_at is null;
|
||||
|
||||
alter table public.reception_kiosks enable row level security;
|
||||
-- Default deny — Admin-Zugriff laeuft ueber Service-Role.
|
||||
Reference in New Issue
Block a user