Reorganize into monorepo layout, move mitarbeiter-app to legacy reference
Consolidates the previously separate omsorgapp and omsorgCore repos (each had their own nested .git with GitHub history) plus the old root-level website/mitarbeiter-app into a single monorepo, matching the structure already documented in the root CLAUDE.md. Also moves the PHP employee app aside as omsorgWeb/mitarbeiter-app-legacy/ to serve as a template for a ground-up rewrite. Fixes .gitignore in the same pass: the config-secrets/uploads/data patterns were unanchored (relative to repo root, not depth-agnostic), so they silently stopped matching once the app moved under omsorgWeb/. Patterns are now **/-prefixed and cover both mitarbeiter-app and mitarbeiter-app-legacy, keeping DB/SMTP credentials and uploaded employee documents out of version control. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
8beb0fcf52
commit
b6c1389c55
@@ -0,0 +1 @@
|
||||
Require all denied
|
||||
@@ -0,0 +1,145 @@
|
||||
<?php
|
||||
return [
|
||||
'description' => 'Initial schema',
|
||||
'up' => [
|
||||
"CREATE TABLE IF NOT EXISTS users (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(255) NOT NULL UNIQUE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
role VARCHAR(32) NOT NULL DEFAULT 'user',
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
email VARCHAR(255) NOT NULL DEFAULT '',
|
||||
telefon VARCHAR(64) NOT NULL DEFAULT ''
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS requests_urlaubsantrag (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
||||
admin_note TEXT NOT NULL,
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL,
|
||||
von VARCHAR(32) NOT NULL DEFAULT '',
|
||||
bis VARCHAR(32) NOT NULL DEFAULT '',
|
||||
vertretung VARCHAR(255) NOT NULL DEFAULT '',
|
||||
nachricht TEXT NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS requests_abwesenheitsantrag (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
||||
admin_note TEXT NOT NULL,
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL,
|
||||
von VARCHAR(32) NOT NULL DEFAULT '',
|
||||
bis VARCHAR(32) NOT NULL DEFAULT '',
|
||||
grund VARCHAR(64) NOT NULL DEFAULT '',
|
||||
vertretung VARCHAR(255) NOT NULL DEFAULT '',
|
||||
nachricht TEXT NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS requests_benefitsantrag (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
||||
admin_note TEXT NOT NULL,
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL,
|
||||
benefit VARCHAR(64) NOT NULL DEFAULT '',
|
||||
nachricht TEXT NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS requests_werben (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
||||
admin_note TEXT NOT NULL,
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL,
|
||||
name VARCHAR(255) NOT NULL DEFAULT '',
|
||||
email VARCHAR(255) NOT NULL DEFAULT '',
|
||||
qualifikation VARCHAR(64) NOT NULL DEFAULT '',
|
||||
nachricht TEXT NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS dienstplan (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
date VARCHAR(16) NOT NULL,
|
||||
schicht VARCHAR(16) NOT NULL,
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL,
|
||||
UNIQUE KEY uq_user_date (user_id, date)
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS downloads (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
original_name VARCHAR(255) NOT NULL,
|
||||
sort_order INT NOT NULL DEFAULT 0,
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS fortbildung_materials (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
original_name VARCHAR(255) NOT NULL,
|
||||
sort_order INT NOT NULL DEFAULT 0,
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS requests_fortbildungsantrag (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
||||
admin_note TEXT NOT NULL,
|
||||
anliegen TEXT NOT NULL,
|
||||
thema TEXT NOT NULL,
|
||||
nachricht TEXT NOT NULL,
|
||||
filename VARCHAR(255) NOT NULL DEFAULT '',
|
||||
original_name VARCHAR(255) NOT NULL DEFAULT '',
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS requests_stundennachweis (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
||||
admin_note TEXT NOT NULL,
|
||||
monat VARCHAR(16) NOT NULL,
|
||||
filename VARCHAR(255) NOT NULL DEFAULT '',
|
||||
original_name VARCHAR(255) NOT NULL DEFAULT '',
|
||||
created_at VARCHAR(32) NOT NULL,
|
||||
updated_at VARCHAR(32) NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS einsatzbewertungen (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
einsatzort VARCHAR(255) NOT NULL,
|
||||
von VARCHAR(32) NOT NULL,
|
||||
bis VARCHAR(32) NOT NULL,
|
||||
bewertung TINYINT NOT NULL,
|
||||
wieder TINYINT(1) NOT NULL DEFAULT 0,
|
||||
feedback TEXT NOT NULL,
|
||||
created_at VARCHAR(32) NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS dokumente (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
kategorie VARCHAR(255) NOT NULL DEFAULT 'Sonstiges',
|
||||
beschreibung TEXT NOT NULL,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
original_name VARCHAR(255) NOT NULL,
|
||||
filesize INT NOT NULL DEFAULT 0,
|
||||
created_at VARCHAR(32) NOT NULL
|
||||
)",
|
||||
"CREATE TABLE IF NOT EXISTS news (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
text TEXT NOT NULL,
|
||||
date VARCHAR(16) NOT NULL,
|
||||
created_at VARCHAR(32) NOT NULL
|
||||
)",
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
return [
|
||||
'description' => 'Add avatar column to users',
|
||||
'up' => [
|
||||
'ALTER TABLE users ADD COLUMN avatar VARCHAR(255) DEFAULT NULL',
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
return [
|
||||
'description' => 'Einsatzanweisung table',
|
||||
'up' => [
|
||||
"CREATE TABLE IF NOT EXISTS einsatzanweisung (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL UNIQUE,
|
||||
filename VARCHAR(255) NOT NULL DEFAULT '',
|
||||
original_name VARCHAR(255) NOT NULL DEFAULT '',
|
||||
ort VARCHAR(255) NOT NULL DEFAULT '',
|
||||
uploaded_at VARCHAR(32) NOT NULL DEFAULT ''
|
||||
)",
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
return [
|
||||
'description' => 'Login attempts table for IP-based rate limiting',
|
||||
'up' => [
|
||||
"CREATE TABLE IF NOT EXISTS login_attempts (
|
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
ip VARCHAR(45) NOT NULL DEFAULT '',
|
||||
username VARCHAR(190) NOT NULL DEFAULT '',
|
||||
attempted_at VARCHAR(32) NOT NULL DEFAULT ''
|
||||
)",
|
||||
"CREATE INDEX idx_login_attempts_ip_time ON login_attempts (ip, attempted_at)",
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
return [
|
||||
'description' => 'Add filename/original_name to requests_urlaubsantrag',
|
||||
'up' => [
|
||||
"ALTER TABLE requests_urlaubsantrag ADD COLUMN filename VARCHAR(255) NOT NULL DEFAULT ''",
|
||||
"ALTER TABLE requests_urlaubsantrag ADD COLUMN original_name VARCHAR(255) NOT NULL DEFAULT ''",
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
// Additiv: fügt Spalten hinzu, die migrate-users-to-core.php befüllt, um jede lokale users-Zeile
|
||||
// (Fremdschlüssel-Ziel für dienstplan/requests_*/dokumente/einsatzanweisung/einsatzbewertungen) auf
|
||||
// die neue omsorgCore-Identität abzubilden. Die Tabelle `users` bleibt danach bestehen, wird aber zum
|
||||
// reinen Lesecache (Name/E-Mail/Telefon/Avatar/Aktiv-Status) für die noch nicht migrierten Seiten -
|
||||
// omsorgCore ist die Quelle der Wahrheit, siehe lib/auth.php. `password_hash` wird erst am Ende von
|
||||
// migrate-users-to-core.php gelöscht (destruktiv, deshalb nicht Teil dieser automatisch laufenden
|
||||
// Migration - erst NACHDEM alle User erfolgreich nach omsorgCore übernommen wurden).
|
||||
return [
|
||||
'description' => 'Add omsorgCore identity mapping columns to users (prep for migrate-users-to-core.php)',
|
||||
'up' => [
|
||||
'ALTER TABLE users ADD COLUMN omsorgcore_user_id CHAR(36) DEFAULT NULL',
|
||||
'ALTER TABLE users ADD COLUMN omsorgcore_employee_id CHAR(36) DEFAULT NULL',
|
||||
],
|
||||
];
|
||||
Reference in New Issue
Block a user