From f8b5c8de651a3728f93a2285b71b7a669c4961fc Mon Sep 17 00:00:00 2001 From: fs Date: Sun, 22 Mar 2026 22:27:35 +0100 Subject: [PATCH] feat: seed demo users for each role in init.sql Add 4 new demo users (Max Machtvoll/Manager, Bernd Benutzer/User, Petra Pruefblick/Auditor, Hilfe Hilde/Support) so a fresh install showcases all 5 roles with realistic data across both departments. Co-Authored-By: Claude Opus 4.6 (1M context) --- db/init/init.sql | 356 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 356 insertions(+) diff --git a/db/init/init.sql b/db/init/init.sql index 6f436b1..09cc5af 100644 --- a/db/init/init.sql +++ b/db/init/init.sql @@ -936,6 +936,362 @@ WHERE u.email = 'demo@user.com' SELECT 1 FROM user_roles ur WHERE ur.user_id = u.id AND ur.role_id = r.id ); +-- ─── Demo user: Max Machtvoll (Manager) ─── + +INSERT INTO `users` ( + `uuid`, + `first_name`, + `last_name`, + `display_name`, + `email`, + `profile_description`, + `job_title`, + `phone`, + `mobile`, + `short_dial`, + `address`, + `postal_code`, + `city`, + `country`, + `region`, + `hire_date`, + `email_verified_at`, + `password`, + `locale`, + `totp_secret`, + `theme`, + `primary_tenant_id`, + `created_by`, + `created`, + `active`, + `active_changed_at`, + `active_changed_by` +) +SELECT + UUID(), + 'Max', + 'Machtvoll', + 'Max Machtvoll', + 'max@user.com', + 'Manager mit Weitblick und festem Griff am Steuer.', + 'Abteilungsleiter', + '+49 30 9876543', + '+49 172 1111111', + '201', + 'Chefetage 7', + '80331', + 'Muenchen', + 'Deutschland', + 'Bayern', + '2023-06-01', + NOW(), + '$2y$12$KVCQvuy4Pl1aySBuzSpc7ehpZhAzYZkndDI9OaMi05E2P/Mhob5HO', + 'de', + NULL, + 'light', + (SELECT id FROM tenants WHERE description = 'MusterMandant' LIMIT 1), + NULL, + NOW(), + 1, + NOW(), + NULL +WHERE NOT EXISTS (SELECT 1 FROM users WHERE email = 'max@user.com'); + +INSERT INTO `user_tenants` (`user_id`, `tenant_id`, `created`) +SELECT u.id, t.id, NOW() +FROM users u +JOIN tenants t ON t.description = 'MusterMandant' +WHERE u.email = 'max@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_tenants ut WHERE ut.user_id = u.id AND ut.tenant_id = t.id + ); + +INSERT INTO `user_departments` (`user_id`, `department_id`, `created`) +SELECT u.id, d.id, NOW() +FROM users u +JOIN departments d ON d.code = 'MUSTER' +JOIN tenants t ON t.id = d.tenant_id AND t.description = 'MusterMandant' +WHERE u.email = 'max@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_departments ud WHERE ud.user_id = u.id AND ud.department_id = d.id + ); + +INSERT INTO `user_roles` (`user_id`, `role_id`, `created`) +SELECT u.id, r.id, NOW() +FROM users u +JOIN roles r ON r.description = 'Manager' +WHERE u.email = 'max@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_roles ur WHERE ur.user_id = u.id AND ur.role_id = r.id + ); + +-- ─── Demo user: Bernd Benutzer (User) ─── + +INSERT INTO `users` ( + `uuid`, + `first_name`, + `last_name`, + `display_name`, + `email`, + `profile_description`, + `job_title`, + `phone`, + `mobile`, + `short_dial`, + `address`, + `postal_code`, + `city`, + `country`, + `region`, + `hire_date`, + `email_verified_at`, + `password`, + `locale`, + `totp_secret`, + `theme`, + `primary_tenant_id`, + `created_by`, + `created`, + `active`, + `active_changed_at`, + `active_changed_by` +) +SELECT + UUID(), + 'Bernd', + 'Benutzer', + 'Bernd Benutzer', + 'bernd@user.com', + 'Stinknormaler Benutzer. Macht seine Arbeit, trinkt seinen Kaffee.', + 'Sachbearbeiter', + '+49 40 5551234', + '+49 173 2222222', + '302', + 'Normalweg 42', + '20095', + 'Hamburg', + 'Deutschland', + 'Hamburg', + '2024-03-10', + NOW(), + '$2y$12$KVCQvuy4Pl1aySBuzSpc7ehpZhAzYZkndDI9OaMi05E2P/Mhob5HO', + 'de', + NULL, + 'light', + (SELECT id FROM tenants WHERE description = 'MusterMandant' LIMIT 1), + NULL, + NOW(), + 1, + NOW(), + NULL +WHERE NOT EXISTS (SELECT 1 FROM users WHERE email = 'bernd@user.com'); + +INSERT INTO `user_tenants` (`user_id`, `tenant_id`, `created`) +SELECT u.id, t.id, NOW() +FROM users u +JOIN tenants t ON t.description = 'MusterMandant' +WHERE u.email = 'bernd@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_tenants ut WHERE ut.user_id = u.id AND ut.tenant_id = t.id + ); + +INSERT INTO `user_departments` (`user_id`, `department_id`, `created`) +SELECT u.id, d.id, NOW() +FROM users u +JOIN departments d ON d.code = 'MUSTER2' +JOIN tenants t ON t.id = d.tenant_id AND t.description = 'MusterMandant' +WHERE u.email = 'bernd@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_departments ud WHERE ud.user_id = u.id AND ud.department_id = d.id + ); + +INSERT INTO `user_roles` (`user_id`, `role_id`, `created`) +SELECT u.id, r.id, NOW() +FROM users u +JOIN roles r ON r.description = 'User' +WHERE u.email = 'bernd@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_roles ur WHERE ur.user_id = u.id AND ur.role_id = r.id + ); + +-- ─── Demo user: Petra Pruefblick (Auditor) ─── + +INSERT INTO `users` ( + `uuid`, + `first_name`, + `last_name`, + `display_name`, + `email`, + `profile_description`, + `job_title`, + `phone`, + `mobile`, + `short_dial`, + `address`, + `postal_code`, + `city`, + `country`, + `region`, + `hire_date`, + `email_verified_at`, + `password`, + `locale`, + `totp_secret`, + `theme`, + `primary_tenant_id`, + `created_by`, + `created`, + `active`, + `active_changed_at`, + `active_changed_by` +) +SELECT + UUID(), + 'Petra', + 'Pruefblick', + 'Petra Pruefblick', + 'petra@user.com', + 'Sieht alles. Vergisst nichts. Ihr Rotstift ist legendaer.', + 'Prueferin', + '+49 69 4449876', + '+49 174 3333333', + '403', + 'Kontrollgasse 8', + '60311', + 'Frankfurt am Main', + 'Deutschland', + 'Hessen', + '2023-11-20', + NOW(), + '$2y$12$KVCQvuy4Pl1aySBuzSpc7ehpZhAzYZkndDI9OaMi05E2P/Mhob5HO', + 'de', + NULL, + 'light', + (SELECT id FROM tenants WHERE description = 'MusterMandant' LIMIT 1), + NULL, + NOW(), + 1, + NOW(), + NULL +WHERE NOT EXISTS (SELECT 1 FROM users WHERE email = 'petra@user.com'); + +INSERT INTO `user_tenants` (`user_id`, `tenant_id`, `created`) +SELECT u.id, t.id, NOW() +FROM users u +JOIN tenants t ON t.description = 'MusterMandant' +WHERE u.email = 'petra@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_tenants ut WHERE ut.user_id = u.id AND ut.tenant_id = t.id + ); + +INSERT INTO `user_departments` (`user_id`, `department_id`, `created`) +SELECT u.id, d.id, NOW() +FROM users u +JOIN departments d ON d.code = 'MUSTER' +JOIN tenants t ON t.id = d.tenant_id AND t.description = 'MusterMandant' +WHERE u.email = 'petra@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_departments ud WHERE ud.user_id = u.id AND ud.department_id = d.id + ); + +INSERT INTO `user_roles` (`user_id`, `role_id`, `created`) +SELECT u.id, r.id, NOW() +FROM users u +JOIN roles r ON r.description = 'Auditor' +WHERE u.email = 'petra@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_roles ur WHERE ur.user_id = u.id AND ur.role_id = r.id + ); + +-- ─── Demo user: Hilfe Hilde (Support) ─── + +INSERT INTO `users` ( + `uuid`, + `first_name`, + `last_name`, + `display_name`, + `email`, + `profile_description`, + `job_title`, + `phone`, + `mobile`, + `short_dial`, + `address`, + `postal_code`, + `city`, + `country`, + `region`, + `hire_date`, + `email_verified_at`, + `password`, + `locale`, + `totp_secret`, + `theme`, + `primary_tenant_id`, + `created_by`, + `created`, + `active`, + `active_changed_at`, + `active_changed_by` +) +SELECT + UUID(), + 'Hilde', + 'Hilfe', + 'Hilfe Hilde', + 'hilde@user.com', + 'Erste Hilfe fuer alle Notfaelle. Kein Ticket bleibt unbeantwortet.', + 'Supportmitarbeiterin', + '+49 221 7773210', + '+49 175 4444444', + '504', + 'Rettungsring 3', + '50667', + 'Koeln', + 'Deutschland', + 'Nordrhein-Westfalen', + '2024-07-01', + NOW(), + '$2y$12$KVCQvuy4Pl1aySBuzSpc7ehpZhAzYZkndDI9OaMi05E2P/Mhob5HO', + 'de', + NULL, + 'light', + (SELECT id FROM tenants WHERE description = 'MusterMandant' LIMIT 1), + NULL, + NOW(), + 1, + NOW(), + NULL +WHERE NOT EXISTS (SELECT 1 FROM users WHERE email = 'hilde@user.com'); + +INSERT INTO `user_tenants` (`user_id`, `tenant_id`, `created`) +SELECT u.id, t.id, NOW() +FROM users u +JOIN tenants t ON t.description = 'MusterMandant' +WHERE u.email = 'hilde@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_tenants ut WHERE ut.user_id = u.id AND ut.tenant_id = t.id + ); + +INSERT INTO `user_departments` (`user_id`, `department_id`, `created`) +SELECT u.id, d.id, NOW() +FROM users u +JOIN departments d ON d.code = 'MUSTER2' +JOIN tenants t ON t.id = d.tenant_id AND t.description = 'MusterMandant' +WHERE u.email = 'hilde@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_departments ud WHERE ud.user_id = u.id AND ud.department_id = d.id + ); + +INSERT INTO `user_roles` (`user_id`, `role_id`, `created`) +SELECT u.id, r.id, NOW() +FROM users u +JOIN roles r ON r.description = 'Support' +WHERE u.email = 'hilde@user.com' + AND NOT EXISTS ( + SELECT 1 FROM user_roles ur WHERE ur.user_id = u.id AND ur.role_id = r.id + ); + INSERT INTO `pages` (`uuid`, `slug`, `created`) SELECT UUID(), v.slug, NOW() FROM (