app.sample.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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://bcrypt-generator.com/
  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. 'api_messages' => [
  60. 'common' => [
  61. 'method_not_allowed' => 'Method not allowed',
  62. 'invalid_csrf' => 'Invalid CSRF-Token.',
  63. 'request_blocked' => 'Anfrage blockiert.',
  64. 'invalid_email' => 'Bitte eine gültige E-Mail-Adresse eingeben.',
  65. ],
  66. 'load_draft' => [
  67. 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.',
  68. ],
  69. 'save_draft' => [
  70. 'already_submitted' => 'Für diese E-Mail wurde bereits ein Antrag abgeschlossen.',
  71. 'lock_error' => 'Speichern derzeit nicht möglich.',
  72. 'blocked_fallback' => 'Bereits abgeschlossen.',
  73. 'success' => 'Entwurf gespeichert.',
  74. ],
  75. 'submit' => [
  76. 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.',
  77. 'upload_error' => 'Fehler bei Uploads.',
  78. 'validation_error' => 'Bitte Pflichtfelder prüfen. Nicht alle Pflichtfeler sind ausgefüllt oder ungültige Werte vorhanden.',
  79. 'lock_error' => 'Abschluss derzeit nicht möglich. Debug-Info: Lock konnte nicht gesetzt werden.',
  80. 'failure' => 'Abschluss fehlgeschlagen.',
  81. 'success' => 'Ihr Antrag wurde erfolgreich empfangen. Bei Fragen kontaktieren Sie %contact_email%.',
  82. ],
  83. 'reset' => [
  84. 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor. Ein Zurücksetzen ist nicht möglich.',
  85. 'delete_error' => 'Daten konnten nicht gelöscht werden.',
  86. 'success' => 'Gespeicherte Daten wurden gelöscht.',
  87. ],
  88. 'delete_upload' => [
  89. 'invalid_upload_entry' => 'Ungültiger Upload-Eintrag.',
  90. 'already_submitted' => 'Für diese E-Mail liegt bereits ein abgeschlossener Antrag vor.',
  91. 'draft_not_found' => 'Kein Entwurf gefunden.',
  92. 'upload_not_found' => 'Upload nicht gefunden.',
  93. 'delete_error' => 'Upload konnte nicht gelöscht werden.',
  94. 'success' => 'Upload gelöscht.',
  95. ],
  96. 'upload_preview' => [
  97. 'invalid_upload_entry' => 'Ungültiger Upload-Eintrag.',
  98. 'draft_not_found' => 'Entwurf nicht gefunden.',
  99. 'upload_not_found' => 'Upload nicht gefunden.',
  100. 'file_not_found' => 'Datei nicht gefunden.',
  101. ],
  102. ],
  103. ];