TeamVis Self-Host-Bundle v0.33.0
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# TeamVis — Self-Hosting-Bundle (v0.32.1)
|
||||
# TeamVis — Self-Hosting-Bundle (v0.33.0)
|
||||
|
||||
Dieses Bundle enthält alles zum **Betreiben** von TeamVis auf eigener
|
||||
Infrastruktur — **keinen** App-Quellcode. Die App selbst kommt als fertiges
|
||||
@@ -36,4 +36,4 @@ Vollständige Schritt-für-Schritt-Anleitung (von der nackten VM bis live):
|
||||
| `supabase/migrations/` | Datenbank-Schema (DDL) |
|
||||
| `docs/` | Anleitungen |
|
||||
|
||||
Stand: TeamVis 0.32.1.
|
||||
Stand: TeamVis 0.33.0.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "teamvis-selfhost",
|
||||
"version": "0.32.1",
|
||||
"version": "0.33.0",
|
||||
"private": true,
|
||||
"description": "Self-Hosting-Bundle für TeamVis (Installer + Migrationen, ohne App-Quellcode).",
|
||||
"type": "module",
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
-- ====================================================================
|
||||
-- 0056_brand_font — eigene Marken-Schriftart (Branding)
|
||||
-- ====================================================================
|
||||
-- Der Mandant kann eine eigene Schrift hinterlegen (Google-Font-Name,
|
||||
-- kuratierte Auswahl oder Datei-Upload). DSGVO: die Font-Dateien werden
|
||||
-- SELF-HOSTED (im branding-assets-Bucket), NICHT von Google's CDN geladen.
|
||||
-- Angewandt auf die öffentlichen Flächen (--font-sans-Override + @font-face)
|
||||
-- und das QR-Wallpaper.
|
||||
|
||||
alter table public.site_settings
|
||||
add column if not exists brand_font_family text, -- CSS/SVG-Family, z.B. "Inter"
|
||||
add column if not exists brand_font_regular_url text, -- self-hosted TTF (400)
|
||||
add column if not exists brand_font_bold_url text, -- self-hosted TTF (700)
|
||||
add column if not exists brand_font_source text; -- 'google' | 'upload'
|
||||
|
||||
-- anon-Spalten-Grant neu setzen (Muster 0043/0055): die Font-Spalten sind
|
||||
-- KEINE Geheimnisse — die öffentliche Karte liest site_settings via anon und
|
||||
-- braucht sie. Also: Block-Liste = bisherige Geheimnisse (bleiben gesperrt),
|
||||
-- die neuen brand_font_*-Spalten werden dadurch automatisch anon-lesbar.
|
||||
revoke all on public.site_settings from anon;
|
||||
|
||||
do $$
|
||||
declare
|
||||
v_cols text;
|
||||
begin
|
||||
select string_agg(quote_ident(column_name), ', ')
|
||||
into v_cols
|
||||
from information_schema.columns
|
||||
where table_schema = 'public'
|
||||
and table_name = 'site_settings'
|
||||
and column_name not in (
|
||||
'ai_anthropic_key', 'ai_openai_key', 'ai_openrouter_key',
|
||||
'apple_pass_cert_p12', 'apple_pass_passphrase', 'apple_pass_type_id',
|
||||
'google_wallet_service_account_json',
|
||||
'phone_api_token', 'phone_lookup_token', 'phone_webhook_secret',
|
||||
'license_key',
|
||||
'smtp_host', 'smtp_port', 'smtp_secure', 'smtp_user', 'smtp_pass',
|
||||
'smtp_from_email', 'smtp_from_name'
|
||||
);
|
||||
execute 'grant select (' || v_cols || ') on public.site_settings to anon';
|
||||
end $$;
|
||||
Reference in New Issue
Block a user