mirror of
https://github.com/guyg1474/hcrb.git
synced 2026-10-15 23:13:28 +02:00
Rollen (Admin/Mitglied), Seite Kooperationen, Textanpassungen
- Gemeinsame Zugänge mit Rollen: Admin darf alles, Mitglied nutzt Kalender, Fahrtplaner, Treffpunkte und bearbeitet Mitglieder (kein Hinzufügen, Löschen, Import, keine Patches, keine Statistik-Korrektur) - Server prüft die Rechte (403), Konten ohne Rolle gelten als Admin - npm run user: add <name> [admin|mitglied], role <name> <rolle> - Neue öffentliche Seite Kooperationen mit Titelbild, Anführer, Social-Media-Links und Beschreibung, Pflege durch Admin - Kopfzeile bleibt bei mittlerer Breite einzeilig - Texte auf Wunsch gekürzt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f46016487d
commit
819219fb2d
18 files changed
+661
-106
No files matched your search
@@ -38,26 +38,47 @@ Anderen Port wählen: `PORT=8080 npm start`.
|
||||
Die Startseite zeigt als „Pile of Shame“, wer im laufenden Jahr noch nicht spielen war.
|
||||
Der Jahreswechsel richtet sich nach der Zeitzone des Servers (im systemd-Dienst `Environment=TZ=Europe/Berlin` setzen).
|
||||
- **Patches** (`/patches`, öffentlich) – Galerie der Gruppen- und Event-Patches, getrennt nach „Gibt es schon“ und „In Planung“.
|
||||
Angemeldet: Patch hochladen (PNG, JPEG oder WebP – wird im Browser auf max. 1600 px verkleinert – oder SVG bis 2 MB),
|
||||
Admin-Zugang: Patch hochladen (PNG, JPEG oder WebP – wird im Browser auf max. 1600 px verkleinert – oder SVG bis 2 MB),
|
||||
bearbeiten, löschen. SVGs mit Skripten, Ereignis-Attributen oder Verweisen auf fremde Dateien werden abgelehnt
|
||||
und zusätzlich mit einer Content-Security-Policy ausgeliefert.
|
||||
Die Bilder liegen in `data/patches/` und sind damit im Docker-Volume und im Backup enthalten.
|
||||
- **Kooperationen** (`/kooperationen`, öffentlich) – Gruppen, mit denen die HCRB zusammenarbeitet. Übersicht als Karten,
|
||||
jede Kooperation hat eine eigene Ansicht (`/kooperationen#<id>`) mit Titelbild, Anführer, Social-Media-Links
|
||||
(Website, Instagram, YouTube, TikTok, Facebook, Discord) und Beschreibung. Anlegen, bearbeiten, löschen nur mit dem
|
||||
Admin-Zugang. Titelbilder liegen in `data/kooperationen/`.
|
||||
- **Gruppe** (`/gruppe`) – feste Mitglieder (Vorname, extern ja/nein, Auto ja/nein, freie Plätze ohne Fahrer, „kommt immer mit eigenem Auto“,
|
||||
Standard-Treffpunkt als Fahrer, „fährt am liebsten mit bei …“) und Treffpunkte (Name, Adresse) verwalten, Export/Import der Mitglieder als JSON.
|
||||
Hinzufügen, Löschen und Import nur mit dem Admin-Zugang.
|
||||
|
||||
## Login
|
||||
|
||||
Öffentlich sind nur die Startseite (inkl. der nächsten 3 Termine: Datum, Uhrzeit, Titel, Anzahl Zusagen), die Statistik
|
||||
(Namen und Anzahl gespielter Spieltage) und die Patches.
|
||||
(Namen und Anzahl gespielter Spieltage), die Patches und die Kooperationen.
|
||||
Kalender, Fahrtplaner, Gruppe und die komplette API sind nur nach dem Anmelden erreichbar.
|
||||
|
||||
Die Zugänge sind gemeinsame Konten, keine persönlichen. Es gibt zwei Rollen:
|
||||
|
||||
| | Admin | Mitglied |
|
||||
| --- | --- | --- |
|
||||
| Kalender: Termine eintragen, bearbeiten, löschen, zusagen | ✓ | ✓ |
|
||||
| Fahrtplaner, Treffpunkte | ✓ | ✓ |
|
||||
| Mitglieder bearbeiten, Gruppe exportieren | ✓ | ✓ |
|
||||
| Mitglieder hinzufügen, löschen, Gruppe importieren | ✓ | – |
|
||||
| Patches hochladen, bearbeiten, löschen | ✓ | – |
|
||||
| Kooperationen anlegen, bearbeiten, löschen | ✓ | – |
|
||||
| Statistik von Hand korrigieren (− / +) | ✓ | – |
|
||||
|
||||
Typisch: ein Konto `admin` und ein Konto für alle Mitglieder, z. B. `hcrb`.
|
||||
Konten aus der Zeit vor den Rollen gelten als Admin, bis man ihre Rolle ändert.
|
||||
|
||||
Benutzer werden auf dem Server per Kommandozeile verwaltet:
|
||||
|
||||
```bash
|
||||
npm run user -- list # alle Benutzer anzeigen
|
||||
npm run user -- add <name> # Benutzer anlegen
|
||||
npm run user -- passwd <name> # Passwort ändern (meldet den Benutzer überall ab)
|
||||
npm run user -- remove <name> # Benutzer löschen (sofort abgemeldet)
|
||||
npm run user -- list # alle Benutzer mit Rolle anzeigen
|
||||
npm run user -- add <name> [admin|mitglied] # Benutzer anlegen (Standard: mitglied)
|
||||
npm run user -- role <name> <admin|mitglied> # Rolle ändern (meldet den Benutzer überall ab)
|
||||
npm run user -- passwd <name> # Passwort ändern (meldet den Benutzer überall ab)
|
||||
npm run user -- remove <name> # Benutzer löschen (sofort abgemeldet)
|
||||
```
|
||||
|
||||
Sicherheit:
|
||||
@@ -71,11 +92,11 @@ Sicherheit:
|
||||
## Aufbau
|
||||
|
||||
```
|
||||
server.js Express-Server + REST-API (/api/members, /api/events, /api/meeting-points, /api/patches, .ics-Export)
|
||||
server.js Express-Server + REST-API (/api/members, /api/events, /api/meeting-points, /api/patches, /api/kooperationen, .ics-Export)
|
||||
auth.js Login, Passwort-Hashing, Sitzungen
|
||||
scripts/user.js Benutzerverwaltung (npm run user)
|
||||
data/ db.json, users.json, sessions.json, patches/ (automatisch angelegt, nicht in Git)
|
||||
public/ öffentlich: Startseite, Statistik, Patches, Login, CSS, Bilder, Schriften, common.js
|
||||
data/ db.json, users.json, sessions.json, patches/, kooperationen/ (automatisch angelegt, nicht in Git)
|
||||
public/ öffentlich: Startseite, Statistik, Patches, Kooperationen, Login, CSS, Bilder, Schriften, common.js
|
||||
private/ nur angemeldet: Kalender, Fahrtplaner, Gruppe
|
||||
```
|
||||
|
||||
|
||||
Reference in new issue
Block a user