first commit
This commit is contained in:
156
README.md
Normal file
156
README.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# TC Ingelfingen Arbeitszeiterfassung
|
||||
|
||||
Strato-taugliche PHP-Webanwendung für die Arbeitszeiterfassung des TC Ingelfingen.
|
||||
|
||||
## Eigenschaften
|
||||
|
||||
- Läuft direkt aus `httpdocs` ohne Shell, Node oder Container
|
||||
- Optional an externe MySQL/MariaDB-Datenbank anbindbar
|
||||
- Mitglieder-Login mit Rollenmodell
|
||||
- Mitglieder sehen Stundenstand, Reststunden und möglichen EUR-Abzug
|
||||
- Bearbeiter buchen Stunden und legen Mitglieder an
|
||||
- Admins können alles, inklusive Mitglieder anlegen, Rollen vergeben und Logs ansehen
|
||||
- Eigene Profilseite für Vorname, Nachname und Passwortänderung
|
||||
- Passwort-Reset über E-Mail-Link auf der Anmeldeseite
|
||||
- Darkmode-Schalter in der Kopfzeile mit lokaler Speicherung
|
||||
- Dashboard-Infokasten für alle Mitglieder, pflegbar durch Admins mit einfacher Markdown-Unterstützung
|
||||
- Aggregierte Dashboard-Übersicht für Bearbeiter und Admins über alle Mitglieder
|
||||
- Stundenbuchungen mit Rollenansicht: Mitglieder nur eigene, Bearbeiter und Admins alle
|
||||
- Admins können einzelne Stundenbuchungen löschen
|
||||
- Paginierung mit 50 Einträgen pro Seite in Benutzerliste, Stundenbuchungen und Logansicht
|
||||
- Audit-Log für Verwaltungsaktionen wie Benutzer anlegen, löschen, Rollen ändern und Passwortaktionen
|
||||
- CSV-Export und CSV-Import für Benutzerdaten inklusive geleisteter Stunden
|
||||
- Separater CSV-Export für alle Stundenbuchungen
|
||||
- Admin-Funktion zum Zurücksetzen aller Arbeitsstunden auf 0
|
||||
- Tabler CSS via CDN für UI, Cards, Tabellen und Formulare
|
||||
|
||||
## Strato-Setup
|
||||
|
||||
1. Inhalt von `httpdocs/` auf das Strato-Webverzeichnis hochladen
|
||||
2. Optional diese Umgebungsvariablen oder Konfigurationswerte setzen:
|
||||
- `DB_HOST`
|
||||
- `DB_NAME`
|
||||
- `DB_USER`
|
||||
- `DB_PASS`
|
||||
- `SETUP_KEY` optional, schützt die Ersteinrichtung
|
||||
3. PHP 8.1+ und `pdo_mysql` aktivieren
|
||||
|
||||
## Strato Schritte
|
||||
|
||||
1. DB in Strato anlegen
|
||||
2. `DB_HOST`, `DB_NAME`, `DB_USER`, `DB_PASS` setzen
|
||||
3. `httpdocs/install.php` öffnen und erstes Admin-Konto anlegen
|
||||
4. Danach mit dem neuen Admin einloggen
|
||||
5. Falls keine DB konfiguriert ist, nutzt die App Demo-Zugänge nur zum Anzeigen
|
||||
|
||||
## Datenbank
|
||||
|
||||
Die Anwendung ist so aufgebaut, dass sie mit oder ohne DB läuft. Bei gesetzter DB werden Tabellen automatisch angelegt, sonst werden Demo-Daten genutzt.
|
||||
|
||||
- Mitglieder
|
||||
- Benutzer/Rollen
|
||||
- Arbeitsstunden
|
||||
- Audit-Log
|
||||
- Einstellungen
|
||||
|
||||
## Rollen
|
||||
|
||||
- `member`: sieht das eigene Dashboard, die eigene Profilseite und die eigenen Stundenbuchungen
|
||||
- `editor`: darf Stunden buchen, Mitglieder anlegen und alle Stundenbuchungen sehen
|
||||
- `admin`: darf alles, inklusive Mitglieder anlegen, Rollen vergeben, CSV-Import/Export und globalem Stunden-Reset
|
||||
|
||||
## Funktionen
|
||||
|
||||
- Profil
|
||||
- Jeder Benutzer kann Vorname, Nachname und das eigene Passwort ändern
|
||||
- Die E-Mail-Adresse wird im Profil angezeigt, ist aber nicht editierbar
|
||||
- Für vergessene Passwörter gibt es einen Reset-Link per E-Mail
|
||||
- Dashboard
|
||||
- `member` sieht die eigenen Pflichtstunden, geleisteten Stunden und offenen Stunden
|
||||
- `editor` und `admin` sehen aggregierte Gesamtwerte aller Mitglieder inklusive EUR-Werten
|
||||
- Ein zusätzlicher Informationskasten kann durch Admins gepflegt werden
|
||||
- Stundenbuchungen
|
||||
- `member` sieht nur eigene Buchungen
|
||||
- `editor` und `admin` sehen alle Buchungen
|
||||
- `admin` kann einzelne Buchungen löschen
|
||||
- Die Liste ist auf 50 Einträge pro Seite paginiert
|
||||
- Vereinskonfiguration
|
||||
- Pflichtstunden und Stundenwert pflegen
|
||||
- Informationskasten für das Dashboard pflegen
|
||||
- Benutzerdaten als CSV exportieren
|
||||
- Alle Stundenbuchungen als CSV exportieren
|
||||
- Benutzerdaten aus CSV importieren
|
||||
- Alle Arbeitsstunden auf 0 zurücksetzen
|
||||
- Logansicht mit 50 Einträgen pro Seite
|
||||
- Audit-Log für Verwaltungsaktionen
|
||||
|
||||
## Listen Und Paginierung
|
||||
|
||||
Die folgenden Bereiche nutzen eine Paginierung mit 50 Einträgen pro Seite:
|
||||
|
||||
- Benutzerliste in der Benutzerverwaltung
|
||||
- Stundenbuchungen
|
||||
- Logansicht in der Vereinskonfiguration
|
||||
|
||||
## Markdown Im Informationskasten
|
||||
|
||||
Der Informationskasten im Dashboard unterstützt eine einfache Markdown-Teilmenge:
|
||||
|
||||
- Absätze
|
||||
- Listen mit `- `
|
||||
- `*kursiv*`
|
||||
- `**fett**`
|
||||
|
||||
## CSV-Format
|
||||
|
||||
Der CSV-Export und CSV-Import für Benutzerdaten verwenden diese Spalten:
|
||||
|
||||
- `firstname`
|
||||
- `lastname`
|
||||
- `email`
|
||||
- `role`
|
||||
- `hours_worked`
|
||||
|
||||
Beispiel-Kopfzeile:
|
||||
|
||||
`firstname,lastname,email,role,hours_worked`
|
||||
|
||||
## Passwort-Reset Und Konfiguration
|
||||
|
||||
Für den Passwort-Reset per E-Mail wird eine `config.php` im Projektwurzelverzeichnis verwendet. Eine Vorlage liegt als `config.php.example` vor.
|
||||
|
||||
Mindestens sinnvoll ist ein Absender für E-Mails:
|
||||
|
||||
```php
|
||||
<?php
|
||||
return [
|
||||
'db' => [
|
||||
'host' => '127.0.0.1',
|
||||
'name' => 'arbeitsstunden',
|
||||
'user' => 'dbuser',
|
||||
'pass' => 'dbpass',
|
||||
],
|
||||
'smtp' => [
|
||||
'from_email' => 'noreply@example.de',
|
||||
'from_name' => 'TC Ingelfingen',
|
||||
],
|
||||
];
|
||||
```
|
||||
|
||||
Hinweis:
|
||||
|
||||
- Die aktuelle Implementierung nutzt PHP `mail()` fuer den Versand.
|
||||
- Wenn das Hosting E-Mails direkt versenden kann, funktioniert der Passwort-Reset auch ohne vollstaendige SMTP-Implementierung.
|
||||
- Die Datei `config.php` sollte nicht in `httpdocs/`, sondern im Projektwurzelverzeichnis liegen.
|
||||
|
||||
## Ersteinrichtung
|
||||
|
||||
Wenn noch kein Benutzer vorhanden ist, leite `index.php` automatisch auf `install.php` weiter. Dort kannst du ein erstes Admin-Konto anlegen.
|
||||
|
||||
## Dateien
|
||||
|
||||
- `httpdocs/index.php` Einstieg
|
||||
- `httpdocs/install.php` Ersteinrichtung
|
||||
- `httpdocs/app/bootstrap.php` DB, Login und Business-Logik
|
||||
- `httpdocs/app/views.php` Tabler-UI
|
||||
- `config.php.example` Vorlage für DB- und Mail-Konfiguration
|
||||
Reference in New Issue
Block a user