'Feuerwehr Mitgliedsantrag', 'base_url' => '/', 'contact_email' => 'kontakt@example.org', 'api_messages' => [ 'common' => [ 'method_not_allowed' => 'Method not allowed', 'invalid_csrf' => 'Ungültiges CSRF-Token.', 'request_blocked' => 'Anfrage blockiert.', 'invalid_email' => 'Bitte gültige E-Mail eingeben.', ], 'load_draft' => [ 'rate_limited' => 'Zu viele Anfragen. Bitte später erneut versuchen.', 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.', ], 'save_draft' => [ 'rate_limited' => 'Zu viele Speicheranfragen.', 'already_submitted' => 'Für diese E-Mail wurde bereits ein Antrag abgeschlossen.', 'lock_error' => 'Speichern derzeit nicht möglich.', 'blocked_fallback' => 'Bereits abgeschlossen.', 'success' => 'Entwurf gespeichert.', ], 'submit' => [ 'rate_limited' => 'Zu viele Anfragen.', 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.', 'upload_error' => 'Fehler bei Uploads.', 'validation_error' => 'Bitte Pflichtfelder prüfen.', 'lock_error' => 'Abschluss derzeit nicht möglich.', 'failure' => 'Abschluss fehlgeschlagen.', 'success' => 'Ihr Antrag wurde erfolgreich empfangen. Bei Fragen kontaktieren Sie %contact_email%.', ], 'reset' => [ 'rate_limited' => 'Zu viele Löschanfragen. Bitte später erneut versuchen.', 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor. Ein Zurücksetzen ist nicht möglich.', 'delete_error' => 'Daten konnten nicht gelöscht werden.', 'success' => 'Gespeicherte Daten wurden gelöscht.', ], 'delete_upload' => [ 'invalid_upload_entry' => 'Ungültiger Upload-Eintrag.', 'rate_limited' => 'Zu viele Löschanfragen. Bitte später erneut versuchen.', 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.', 'draft_not_found' => 'Kein Entwurf gefunden.', 'upload_not_found' => 'Upload nicht gefunden.', 'delete_error' => 'Upload konnte nicht gelöscht werden.', 'success' => 'Upload gelöscht.', ], 'upload_preview' => [ 'invalid_upload_entry' => 'Ungültiger Upload-Eintrag.', 'rate_limited' => 'Zu viele Anfragen. Bitte später erneut versuchen.', 'draft_not_found' => 'Entwurf nicht gefunden.', 'upload_not_found' => 'Upload nicht gefunden.', 'file_not_found' => 'Datei nicht gefunden.', ], ], 'start' => [ 'intro_text' => 'Bitte E-Mail eingeben. Bestehende Entwürfe werden automatisch geladen.', ], 'disclaimer' => [ 'title' => 'Wichtiger Hinweis', 'text' => "Bitte lesen Sie diesen Hinweis vor Beginn sorgfaeltig.\n\nMit dem Fortfahren bestaetigen Sie, dass Ihre Angaben vollstaendig und wahrheitsgemaess sind.\nIhre Daten werden ausschliesslich zur Bearbeitung des Mitgliedsantrags verwendet.", 'accept_label' => 'Hinweis gelesen, weiter zum Antrag', ], 'address_disclaimer' => [ 'text' => 'Bitte geben Sie Ihre vollstaendige Meldeadresse inklusive Hausnummer an.', ], 'retention' => [ 'draft_days' => 14, 'submission_days' => 90, ], 'uploads' => [ 'max_size' => 10 * 1024 * 1024, 'allowed_extensions' => ['pdf', 'jpg', 'jpeg', 'png', 'webp'], 'allowed_mimes' => [ 'application/pdf', 'image/jpeg', 'image/png', 'image/webp', ], ], 'rate_limit' => [ 'enabled' => true, 'requests' => 30, 'window_seconds' => 300, ], 'admin' => [ // Feste Zugangsdaten als Tabelle (hardcoded). // Hash mit: php -r "echo password_hash('DEIN-PASSWORT', PASSWORD_DEFAULT), PHP_EOL;" 'credentials' => [ [ 'username' => 'admin', 'password_hash' => '', ], ], 'session_timeout_seconds' => 3600, ], 'storage' => [ 'drafts' => $root . '/storage/drafts', 'submissions' => $root . '/storage/submissions', 'uploads' => $root . '/storage/uploads', 'rate_limit' => $root . '/storage/rate_limit', 'logs' => $root . '/storage/logs', 'locks' => $root . '/storage/locks', ], ];