app.sample.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. declare(strict_types=1);
  3. $root = dirname(__DIR__);
  4. return [
  5. 'project_name' => 'Feuerwehr Mitgliedsantrag',
  6. 'base_url' => '/',
  7. 'contact_email' => 'kontakt@example.com',
  8. 'start' => [
  9. 'intro_text' => 'Bitte E-Mail eingeben. Bestehende Entwürfe werden automatisch geladen.',
  10. ],
  11. 'disclaimer' => [
  12. 'title' => 'Wichtiger Hinweis',
  13. 'text' => "Bitte lesen Sie diesen Hinweis vor Beginn sorgfältig.\n\nMit dem Fortfahren bestaetigen Sie, dass Ihre Angaben vollstaendig und wahrheitsgemäß sind.\nIhre Daten werden ausschliesslich zur Bearbeitung des Mitgliedsantrags verwendet.",
  14. 'accept_label' => 'Hinweis gelesen, weiter zum Antrag',
  15. ],
  16. 'address_disclaimer' => [
  17. 'text' => 'Bitte geben Sie Ihre vollstaendige Meldeadresse inklusive Hausnummer an.',
  18. ],
  19. 'retention' => [
  20. 'draft_days' => 14,
  21. 'submission_days' => 90,
  22. ],
  23. 'uploads' => [
  24. 'max_size' => 10 * 1024 * 1024,
  25. 'allowed_extensions' => ['pdf', 'jpg', 'jpeg', 'png', 'webp'],
  26. 'allowed_mimes' => [
  27. 'application/pdf',
  28. 'image/jpeg',
  29. 'image/png',
  30. 'image/webp',
  31. ],
  32. ],
  33. 'verification' => [
  34. 'required' => true,
  35. 'inactivity_seconds' => 3600,
  36. 'otp_ttl_seconds' => 600,
  37. 'otp_attempt_limit' => 5,
  38. 'resend_cooldown_seconds' => 60,
  39. ],
  40. 'admin' => [
  41. // Feste Zugangsdaten als Tabelle (hardcoded).
  42. // Hash mit: php -r "echo password_hash('DEIN-PASSWORT', PASSWORD_DEFAULT), PHP_EOL;"
  43. // Alternativ: Online Tool: https://wutools.com/dev/encoding/bcrypt-hash-generator
  44. 'credentials' => [
  45. [
  46. 'username' => 'admin',
  47. 'password_hash' => '',
  48. ],
  49. ],
  50. 'session_timeout_seconds' => 3600,
  51. ],
  52. 'storage' => [
  53. 'drafts' => $root . '/storage/drafts',
  54. 'submissions' => $root . '/storage/submissions',
  55. 'uploads' => $root . '/storage/uploads',
  56. 'logs' => $root . '/storage/logs',
  57. 'locks' => $root . '/storage/locks',
  58. ],
  59. 'pdf_texts' => [
  60. 'metadata' => [
  61. 'creator' => 'Feuerwehr Freising - Mitgliedsantrag',
  62. 'author' => 'Feuerwehr Freising',
  63. ],
  64. 'common' => [
  65. 'submitted_prefix' => 'Eingereicht: ',
  66. 'email_prefix' => 'E-Mail: ',
  67. 'uploads_heading' => 'Hochgeladene Dateien',
  68. 'missing_image' => '[Bild konnte nicht geladen werden]',
  69. ],
  70. 'form_data' => [
  71. 'title' => 'Mitgliedsantrag',
  72. 'filename_prefix' => 'antragsdaten',
  73. ],
  74. 'minor_signature' => [
  75. 'document_title' => 'Einverständniserklärung Minderjährige',
  76. 'heading' => 'Einverständniserklärung fuer Minderjährige',
  77. 'instruction' => 'Dieses Dokument ist auszudrucken, handschriftlich zu unterschreiben und persoenlich einzureichen.',
  78. 'filename_prefix' => 'minderjaehrige_einverstaendnis',
  79. 'signature_heading' => 'Unterschriften',
  80. 'signature_confirmation' => 'Hiermit bestaetigen Antragsteller/in und Erziehungsberechtigte/r die Richtigkeit der oben aufgefuehrten Angaben.',
  81. 'signature_minor_label' => 'Antragsteller/in (minderjaehrig)',
  82. 'signature_guardian_label' => 'Erziehungsberechtigte/r (Eltern)',
  83. ],
  84. 'attachments' => [
  85. 'title' => 'Anlagen zum Mitgliedsantrag',
  86. 'filename_prefix' => 'anlagen',
  87. ],
  88. ],
  89. 'api_messages' => [
  90. 'common' => [
  91. 'method_not_allowed' => 'Method not allowed',
  92. 'invalid_csrf' => 'Invalid CSRF-Token.',
  93. 'request_blocked' => 'Anfrage blockiert.',
  94. 'invalid_email' => 'Bitte eine gültige E-Mail-Adresse eingeben.',
  95. ],
  96. 'load_draft' => [
  97. 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.',
  98. ],
  99. 'save_draft' => [
  100. 'already_submitted' => 'Für diese E-Mail wurde bereits ein Antrag abgeschlossen.',
  101. 'lock_error' => 'Speichern derzeit nicht möglich.',
  102. 'blocked_fallback' => 'Bereits abgeschlossen.',
  103. 'success' => 'Entwurf gespeichert.',
  104. ],
  105. 'submit' => [
  106. 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.',
  107. 'upload_error' => 'Fehler bei Uploads.',
  108. 'validation_error' => 'Bitte Pflichtfelder prüfen. Nicht alle Pflichtfelder sind ausgefüllt oder ungültige Werte vorhanden.',
  109. 'lock_error' => 'Abschluss derzeit nicht möglich. Debug-Info: Lock konnte nicht gesetzt werden.',
  110. 'failure' => 'Abschluss fehlgeschlagen.',
  111. 'success' => 'Ihr Antrag wurde erfolgreich empfangen. Bei Fragen kontaktieren Sie %contact_email%.',
  112. ],
  113. 'reset' => [
  114. 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor. Ein Zurücksetzen ist nicht möglich.',
  115. 'delete_error' => 'Daten konnten nicht gelöscht werden.',
  116. 'success' => 'Gespeicherte Daten wurden gelöscht.',
  117. ],
  118. 'delete_upload' => [
  119. 'invalid_upload_entry' => 'Ungültiger Upload-Eintrag.',
  120. 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.',
  121. 'draft_not_found' => 'Kein Entwurf gefunden.',
  122. 'upload_not_found' => 'Upload nicht gefunden.',
  123. 'delete_error' => 'Upload konnte nicht gelöscht werden.',
  124. 'success' => 'Upload gelöscht.',
  125. ],
  126. 'upload_preview' => [
  127. 'invalid_upload_entry' => 'Ungültiger Upload-Eintrag.',
  128. 'draft_not_found' => 'Entwurf nicht gefunden.',
  129. 'upload_not_found' => 'Upload nicht gefunden.',
  130. 'file_not_found' => 'Datei nicht gefunden.',
  131. ],
  132. ],
  133. ];