Rosorum

Eerste keer instellen

Verbind het beheerportaal met jouw Supabase project.

Stap 1 — Supabase verbinding

Alleen lokaal opgeslagen. Nodig om accounts aan te maken en rollen te wijzigen.

Stap 2 — Eerste bestuur account aanmaken


Stap 3 — Supabase database SQL (klik om te openen)

Voer dit eenmalig uit in de Supabase SQL editor. Ga naar jouw project → SQL Editor → New query.

-- Profielen (naam en actief status per gebruiker) create table if not exists profielen ( id uuid references auth.users on delete cascade primary key, naam text not null, actief boolean default true, created_at timestamptz default now() ); alter table profielen enable row level security; create policy "eigen profiel" on profielen for select using (auth.uid() = id); create policy "bestuur leest alle profielen" on profielen for select using ( (auth.jwt() -> 'user_metadata' ->> 'rol') = 'bestuur' ); -- Rol rechten (welke tegel welke rol mag zien) create table if not exists rol_rechten ( rol text not null, tegel text not null, toegang boolean default false, primary key (rol, tegel) ); alter table rol_rechten enable row level security; create policy "authenticated leest rechten" on rol_rechten for select using (auth.role() = 'authenticated'); create policy "bestuur beheert rechten" on rol_rechten for all using ((auth.jwt() -> 'user_metadata' ->> 'rol') = 'bestuur') with check ((auth.jwt() -> 'user_metadata' ->> 'rol') = 'bestuur'); -- Standaard rechten per rol insert into rol_rechten (rol, tegel, toegang) values ('bestuur', 'website', true), ('bestuur', 'roostering', true), ('bestuur', 'personeel', true), ('bestuur', 'bestanden', true), ('bestuur', 'gebruikers', true), ('administratie', 'website', true), ('administratie', 'roostering', false), ('administratie', 'personeel', false), ('administratie', 'bestanden', true), ('administratie', 'gebruikers', false), ('vrijwilliger', 'website', false), ('vrijwilliger', 'roostering', true), ('vrijwilliger', 'personeel', false), ('vrijwilliger', 'bestanden', true), ('vrijwilliger', 'gebruikers', false) on conflict do nothing; -- Openingstijden (1 rij, id=1) create table if not exists openingstijden ( id int primary key default 1, maandag_status text default 'gesloten', maandag_tijden text default 'Gesloten', dinsdag_status text default 'open', dinsdag_tijden text default '08:30 – 16:30 uur', weekend_status text default 'open', weekend_tijden text default '10:00 – 13:00 uur', extra_noot text default 'Op feestdagen of bij bijzondere omstandigheden kunnen tijden afwijken. Check onze Facebook pagina voor actuele informatie.' ); alter table openingstijden enable row level security; create policy "iedereen leest openingstijden" on openingstijden for select using (true); create policy "bestuur beheert openingstijden" on openingstijden for all using ((auth.jwt() -> 'user_metadata' ->> 'rol') = 'bestuur') with check ((auth.jwt() -> 'user_metadata' ->> 'rol') = 'bestuur'); insert into openingstijden (id) values (1) on conflict do nothing; -- ===== BOEKHOUDING MODULE ===== create table if not exists bk_relaties ( id uuid primary key default gen_random_uuid(), naam text not null, type text default 'klant', email text, telefoon text, adres text, postcode text, plaats text, btw_nummer text, kvk_nummer text, iban text, created_at timestamptz default now() ); alter table bk_relaties enable row level security; create policy "bk_relaties auth" on bk_relaties for all using (auth.role() = 'authenticated'); create table if not exists bk_facturen ( id uuid primary key default gen_random_uuid(), factuur_nummer text, relatie_id uuid references bk_relaties(id), relatie_naam text, relatie_adres text, datum date not null default current_date, vervaldatum date, status text default 'concept', omschrijving text, notities text, subtotaal numeric(12,2) default 0, btw_bedrag numeric(12,2) default 0, totaal numeric(12,2) default 0, betaald_op date, created_at timestamptz default now() ); alter table bk_facturen enable row level security; create policy "bk_facturen auth" on bk_facturen for all using (auth.role() = 'authenticated'); create table if not exists bk_factuur_regels ( id uuid primary key default gen_random_uuid(), factuur_id uuid references bk_facturen(id) on delete cascade, volgorde int default 0, omschrijving text not null, aantal numeric(12,3) default 1, prijs numeric(12,2) default 0, btw_pct numeric(5,2) default 0, btw_bedrag numeric(12,2) default 0, totaal numeric(12,2) default 0 ); alter table bk_factuur_regels enable row level security; create policy "bk_factuur_regels auth" on bk_factuur_regels for all using (auth.role() = 'authenticated'); create table if not exists bk_inkoop ( id uuid primary key default gen_random_uuid(), referentie text, leverancier_id uuid references bk_relaties(id), leverancier_naam text, datum date not null default current_date, vervaldatum date, status text default 'open', categorie text default 'Overig', omschrijving text, notities text, subtotaal numeric(12,2) default 0, btw_bedrag numeric(12,2) default 0, totaal numeric(12,2) default 0, betaald_op date, created_at timestamptz default now() ); alter table bk_inkoop enable row level security; create policy "bk_inkoop auth" on bk_inkoop for all using (auth.role() = 'authenticated'); create table if not exists bk_inkoop_regels ( id uuid primary key default gen_random_uuid(), inkoop_id uuid references bk_inkoop(id) on delete cascade, omschrijving text not null, categorie text default 'Overig', bedrag numeric(12,2) default 0, btw_pct numeric(5,2) default 0, btw_bedrag numeric(12,2) default 0 ); alter table bk_inkoop_regels enable row level security; create policy "bk_inkoop_regels auth" on bk_inkoop_regels for all using (auth.role() = 'authenticated');

Dashboard

Actieve gebruikers
Actief personeel
Sponsors
Verjaardagen (30 dgn)
🎂

Beschikbare modules

🎂
Aankomende verjaardagen
Personeel gesorteerd op eerstvolgende verjaardag
Laden...

📰 Nieuwsberichten

TitelDatumStatusActies
Laden...

Alle personeelsleden

NaamFunctieTypeContactStatusActies
Laden...

💛 Sponsors

BedrijfPakketLooptijdStatusActies
Laden...
📁 Bestanden
📂
Bestanden hierheen slepen om te uploaden
Laden...
€0
Omzet dit jaar
€0
Kosten dit jaar
€0
Resultaat
0
Openstaande facturen

📄 Recente facturen

Laden…

🛒 Recente inkoop

Laden…

👥 Relaties

Laden…
Laden…
Laden…

🎨 Huisstijl instellingen

👁️ Voorbeeld factuur

🎭 Rolverdeling

Laden...

👤 Gebruikers

NaamRolStatusAangemaaktActies
Laden...

⚙️ Supabase verbinding

Alleen lokaal opgeslagen in je browser. Nodig voor gebruikersbeheer.

🗄️ Database SQL

Voer dit eenmalig uit in de Supabase SQL Editor als je de database nog niet hebt ingesteld.

Toon setup SQL
-- Profielen create table if not exists profielen ( id uuid references auth.users on delete cascade primary key, naam text not null, actief boolean default true, created_at timestamptz default now() ); alter table profielen enable row level security; create policy "eigen profiel" on profielen for select using (auth.uid() = id); create policy "bestuur leest alle profielen" on profielen for select using ( (auth.jwt() -> 'user_metadata' ->> 'rol') = 'bestuur' ); -- Rol rechten create table if not exists rol_rechten ( rol text not null, tegel text not null, toegang boolean default false, primary key (rol, tegel) ); alter table rol_rechten enable row level security; create policy "authenticated leest rechten" on rol_rechten for select using (auth.role() = 'authenticated'); create policy "bestuur beheert rechten" on rol_rechten for all using ((auth.jwt() -> 'user_metadata' ->> 'rol') = 'bestuur') with check ((auth.jwt() -> 'user_metadata' ->> 'rol') = 'bestuur'); -- Standaard rechten insert into rol_rechten (rol, tegel, toegang) values ('bestuur','website',true),('bestuur','roostering',true), ('bestuur','personeel',true),('bestuur','bestanden',true),('bestuur','gebruikers',true), ('administratie','website',true),('administratie','roostering',false), ('administratie','personeel',false),('administratie','bestanden',true),('administratie','gebruikers',false), ('vrijwilliger','website',false),('vrijwilliger','roostering',true), ('vrijwilliger','personeel',false),('vrijwilliger','bestanden',true),('vrijwilliger','gebruikers',false) on conflict do nothing;
⬆️ Bezig met uploaden...