TeamVis Self-Host-Bundle v0.31.0
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
-- Branding-Konfiguration, über /admin/branding per UI editierbar.
|
||||
-- Exakt EINE Row in der Tabelle — Singleton via unique-Index erzwungen.
|
||||
-- Leere/NULL-Werte bedeuten "Fallback auf ENV bzw. Code-Defaults".
|
||||
|
||||
create table if not exists public.site_settings (
|
||||
id uuid primary key default gen_random_uuid(),
|
||||
singleton boolean not null default true,
|
||||
|
||||
-- Firma / Öffentlich
|
||||
company_name text,
|
||||
company_short text,
|
||||
claim text,
|
||||
description text,
|
||||
website text,
|
||||
|
||||
-- SEO / Metadaten
|
||||
seo_title text,
|
||||
seo_description text,
|
||||
not_found_suffix text,
|
||||
|
||||
-- Admin-Labels
|
||||
admin_app_name text,
|
||||
admin_app_subtext text,
|
||||
default_company_name text,
|
||||
calendar_placeholder text,
|
||||
|
||||
-- Theme-Farben (Hex)
|
||||
primary_color text,
|
||||
primary_dark text,
|
||||
primary_deep text,
|
||||
secondary_color text,
|
||||
secondary_dark text,
|
||||
secondary_deep text,
|
||||
|
||||
-- Assets (public URLs aus dem branding-assets Storage-Bucket)
|
||||
logo_url text,
|
||||
logo_alt text,
|
||||
favicon_url text,
|
||||
|
||||
updated_at timestamptz not null default now()
|
||||
);
|
||||
|
||||
-- Exakt eine Row erlaubt: unique on (singleton=true)
|
||||
create unique index if not exists site_settings_singleton_unique
|
||||
on public.site_settings ((true)) where singleton = true;
|
||||
|
||||
-- Initiale Row anlegen, falls noch nicht da
|
||||
insert into public.site_settings (singleton)
|
||||
values (true)
|
||||
on conflict do nothing;
|
||||
|
||||
-- RLS: Branding ist public (Farben, Name, Logo) — anon darf lesen.
|
||||
alter table public.site_settings enable row level security;
|
||||
|
||||
drop policy if exists "public_read_site_settings" on public.site_settings;
|
||||
create policy "public_read_site_settings"
|
||||
on public.site_settings
|
||||
for select to anon
|
||||
using (true);
|
||||
-- Schreibzugriff bleibt bei service-role (Admin-Server-Actions).
|
||||
|
||||
-- Storage-Bucket für Logo / Favicon / Icon. Öffentlich, damit <img> und
|
||||
-- <link rel="icon"> direkt drauf zugreifen können.
|
||||
insert into storage.buckets (id, name, public)
|
||||
values ('branding-assets', 'branding-assets', true)
|
||||
on conflict (id) do nothing;
|
||||
|
||||
-- Jeder darf lesen (Bucket ist public gesetzt, aber ein expliziter Select-
|
||||
-- Policy-Eintrag schadet nicht und macht das Verhalten explizit).
|
||||
drop policy if exists "public_read_branding_assets" on storage.objects;
|
||||
create policy "public_read_branding_assets"
|
||||
on storage.objects for select
|
||||
to anon
|
||||
using (bucket_id = 'branding-assets');
|
||||
Reference in New Issue
Block a user