From f27de98bed43bd56274ec46a69b525f0aa93ee8e Mon Sep 17 00:00:00 2001 From: fs Date: Wed, 11 Mar 2026 20:24:18 +0100 Subject: [PATCH] Improve seed defaults for tenant, departments, user role and generic DB names --- .env.example | 8 ++--- .env.prod.example | 4 +-- README.md | 6 ++-- db/init/init.sql | 42 +++++++++++++++++++----- docs/reference-konfiguration.md | 8 ++--- tests/App/Bootstrap/EnvValidatorTest.php | 6 ++-- 6 files changed, 50 insertions(+), 24 deletions(-) diff --git a/.env.example b/.env.example index a297edf..7f06308 100644 --- a/.env.example +++ b/.env.example @@ -14,10 +14,10 @@ TENANT_SCOPE_STRICT=true DB_HOST=db DB_PORT=3306 -DB_NAME=corecore -DB_USER=corecore -DB_PASS=corecore -DB_ROOT_PASSWORD=corecore_root +DB_NAME=db +DB_USER=user +DB_PASS=user +DB_ROOT_PASSWORD=root CACHE_SERVERS=memcached:11211 diff --git a/.env.prod.example b/.env.prod.example index 48d6496..3076456 100644 --- a/.env.prod.example +++ b/.env.prod.example @@ -14,8 +14,8 @@ TENANT_SCOPE_STRICT=true DB_HOST=db DB_PORT=3306 -DB_NAME=corecore -DB_USER=corecore +DB_NAME=db +DB_USER=user DB_PASS=replace-db-password DB_ROOT_PASSWORD=replace-db-root-password diff --git a/README.md b/README.md index 4d8190e..d0ab311 100644 --- a/README.md +++ b/README.md @@ -84,9 +84,9 @@ Standard-Demo-User: - E-Mail: `demo@user.com` - Passwort: `Demo123` -- Tenant: `Cronus` -- Abteilung: `IT` -- Rolle: `Admin` +- Tenant: `MusterMandant` +- Abteilung: `Musterabteilung` +- Rollen: `Admin`, `User` ## Projektstruktur diff --git a/db/init/init.sql b/db/init/init.sql index 130bcca..e08c787 100644 --- a/db/init/init.sql +++ b/db/init/init.sql @@ -666,19 +666,37 @@ CREATE TABLE IF NOT EXISTS `user_remember_tokens` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO `tenants` (`uuid`, `description`, `created`) -SELECT UUID(), 'Cronus', NOW() -WHERE NOT EXISTS (SELECT 1 FROM tenants WHERE description = 'Cronus'); +SELECT UUID(), 'MusterMandant', NOW() +WHERE NOT EXISTS (SELECT 1 FROM tenants WHERE description = 'MusterMandant'); INSERT INTO `departments` (`uuid`, `description`, `tenant_id`, `code`, `active`, `created`) -SELECT UUID(), 'IT', t.id, 'IT', 1, NOW() +SELECT UUID(), 'Musterabteilung', t.id, 'MUSTER', 1, NOW() FROM tenants t -WHERE t.description = 'Cronus' - AND NOT EXISTS (SELECT 1 FROM departments WHERE description = 'IT'); +WHERE t.description = 'MusterMandant' + AND NOT EXISTS ( + SELECT 1 FROM departments d + WHERE d.tenant_id = t.id + AND d.description = 'Musterabteilung' + ); + +INSERT INTO `departments` (`uuid`, `description`, `tenant_id`, `code`, `active`, `created`) +SELECT UUID(), 'Musterabteilung 2', t.id, 'MUSTER2', 1, NOW() +FROM tenants t +WHERE t.description = 'MusterMandant' + AND NOT EXISTS ( + SELECT 1 FROM departments d + WHERE d.tenant_id = t.id + AND d.description = 'Musterabteilung 2' + ); INSERT INTO `roles` (`uuid`, `description`, `code`, `active`, `created`) SELECT UUID(), 'Admin', 'ADMIN', 1, NOW() WHERE NOT EXISTS (SELECT 1 FROM roles WHERE description = 'Admin'); +INSERT INTO `roles` (`uuid`, `description`, `code`, `active`, `created`) +SELECT UUID(), 'User', 'USER', 1, NOW() +WHERE NOT EXISTS (SELECT 1 FROM roles WHERE code = 'USER'); + INSERT INTO `users` ( `uuid`, `first_name`, @@ -708,7 +726,7 @@ SELECT 'de', NULL, 'light', - (SELECT id FROM tenants WHERE description = 'Cronus' LIMIT 1), + (SELECT id FROM tenants WHERE description = 'MusterMandant' LIMIT 1), NULL, NOW(), 1, @@ -723,7 +741,7 @@ WHERE `email` = 'demo@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 = 'Cronus' +JOIN tenants t ON t.description = 'MusterMandant' WHERE u.email = 'demo@user.com' AND NOT EXISTS ( SELECT 1 FROM user_tenants ut WHERE ut.user_id = u.id AND ut.tenant_id = t.id @@ -732,7 +750,8 @@ WHERE u.email = 'demo@user.com' INSERT INTO `user_departments` (`user_id`, `department_id`, `created`) SELECT u.id, d.id, NOW() FROM users u -JOIN departments d ON d.description = 'IT' +JOIN departments d ON d.code = 'MUSTER' +JOIN tenants t ON t.id = d.tenant_id AND t.description = 'MusterMandant' WHERE u.email = 'demo@user.com' AND NOT EXISTS ( SELECT 1 FROM user_departments ud WHERE ud.user_id = u.id AND ud.department_id = d.id @@ -912,6 +931,13 @@ JOIN permissions p ON p.`key` IN ( WHERE r.description IN ('Admin', 'Administrator') OR r.id = 1 ON DUPLICATE KEY UPDATE role_id = role_id; +INSERT INTO `role_permissions` (`role_id`, `permission_id`, `created`) +SELECT r.id, p.id, NOW() +FROM roles r +JOIN permissions p ON p.`key` IN ('users.self_update', 'address_book.view') +WHERE r.code = 'USER' OR r.description = 'User' +ON DUPLICATE KEY UPDATE role_id = role_id; + INSERT INTO `settings` (`key`, `value`, `description`) VALUES ('system_audit_enabled', '1', 'setting.system_audit_enabled'), diff --git a/docs/reference-konfiguration.md b/docs/reference-konfiguration.md index 967de3a..26e50bb 100644 --- a/docs/reference-konfiguration.md +++ b/docs/reference-konfiguration.md @@ -47,10 +47,10 @@ Vorlage: `.env.example` — niemals echte Credentials committen. |---|---|---| | `DB_HOST` | `db` | Hostname des MySQL/MariaDB-Servers (Docker-Service-Name oder IP) | | `DB_PORT` | `3306` | Port des Datenbankservers | -| `DB_NAME` | `corecore` | Name der Datenbank | -| `DB_USER` | `corecore` | Datenbankbenutzer | -| `DB_PASS` | `corecore` | Passwort des Datenbankbenutzers | -| `DB_ROOT_PASSWORD` | `corecore_root` | Root-Passwort für Docker-Compose (wird nur vom DB-Container genutzt, nicht von PHP) | +| `DB_NAME` | `db` | Name der Datenbank | +| `DB_USER` | `user` | Datenbankbenutzer | +| `DB_PASS` | `user` | Passwort des Datenbankbenutzers | +| `DB_ROOT_PASSWORD` | `root` | Root-Passwort für Docker-Compose (wird nur vom DB-Container genutzt, nicht von PHP) | --- diff --git a/tests/App/Bootstrap/EnvValidatorTest.php b/tests/App/Bootstrap/EnvValidatorTest.php index 5d5c9a9..a473398 100644 --- a/tests/App/Bootstrap/EnvValidatorTest.php +++ b/tests/App/Bootstrap/EnvValidatorTest.php @@ -136,9 +136,9 @@ final class EnvValidatorTest extends TestCase 'TENANT_SCOPE_STRICT' => 'true', 'DB_HOST' => 'db', 'DB_PORT' => '3306', - 'DB_NAME' => 'corecore', - 'DB_USER' => 'corecore', - 'DB_PASS' => 'corecore', + 'DB_NAME' => 'db', + 'DB_USER' => 'user', + 'DB_PASS' => 'user', 'CACHE_SERVERS' => 'memcached:11211', 'FIREWALL_CONCURRENCY' => '10', 'FIREWALL_SPINLOCK_SECONDS' => '0.15',