- PHP 79.2%
- Blade 19.3%
- JavaScript 1.1%
- Dockerfile 0.2%
- Shell 0.2%
|
All checks were successful
Ein PNG aus einem Vektorprogramm traegt "<svg" in seinem XMP-Metadatenblock. Svg::looksLikeSvg() suchte die Zeichenfolge irgendwo in den ersten 4 KB, hielt die Datei fuer ein SVG und schickte sie durch den Sanitizer - der bei einem Rasterbild null liefert. Das Bild fehlte danach ohne Fehlermeldung. Die Erkennung wertet jetzt nur noch den Dateianfang. Magic Bytes von PNG, JPEG, GIF, WebP, BMP, TIFF und PDF schliessen SVG aus; vor einem <svg> duerfen nur XML-Deklaration, Kommentare und DOCTYPE stehen. Svg::istSvg() bewertet Inhalt und Content-Type zusammen. Derselbe Fehler trat in Eveni auf (0.378.1): Dort fehlten Event-Logo und Hintergrundgrafik auf gedruckten Namensschildern. Der Baustein ist in allen Werkzeugen derselbe. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GH42FE3UD2ht9qvNWRReDK |
||
|---|---|---|
| .forgejo/workflows | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| docker | ||
| docs | ||
| lang | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| artisan | ||
| CHANGELOG.md | ||
| composer.json | ||
| composer.lock | ||
| docker-compose.build.yml | ||
| docker-compose.quickstart.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| package.json | ||
| phpunit.xml | ||
| README.md | ||
| vite.config.js | ||
Entra
Intranet fuer Mitglieder von Vereinen und Verbaenden. Entra buendelt interne Inhalte (Beitraege/News, spaeter Dokumente, Kalender und Gruppenbereiche) in einer eigenstaendigen Anwendung und ergaenzt damit die natec-Suite (Vereo, Eveni, Kurea, Persona). Mitgliederdaten bleiben in Vereo; Entra konsumiert sie perspektivisch per API und teilt sich die Identitaet ueber Keycloak (SSO).
Module (Stand 0.x)
- Mitglieder-Intranet (
/intranet) — eigenes Filament-Panel fuer alle angemeldeten Benutzer: Start (angeheftete + aktuelle Beitraege), Beitraege mit Detailseite, Kalender, Dokumente, Profilseite; Anmeldung per E-Mail/Passwort oder Keycloak (optional mit Auto-Provisionierung). Benutzermenue mit "Meine Daten" (Link ins Vereo-Portal, konfigurierbar) und "Verwaltung" (nur fuer Benutzer mit Rollen). - Beitraege — interne News/Ankuendigungen mit Entwurf/Veroeffentlichung, Anriss, Rich-Text-Inhalt und Anheften.
- Dokumente — Ordner-basierte Ablage mit Karten-Ansicht, Thumbnails und Inline-Vorschau (Bild/Video/Audio/PDF). Sichtbarkeits-Schalter; Dateien liegen auf der Files-Disk (lokal/S3).
- Kalender — Termine mit Ort, Beginn/Ende oder ganztaegig; im Intranet nach Tagen gruppiert mit deutschen Wochentagen.
- Gruppen — Gremien/AGs mit Mitglieder-Zuordnung; Beitraege, Termine und Dokument-Ordner lassen sich auf eine Gruppe einschraenken ("Sichtbar fuer").
- Meine Dateien — persoenliche Dokumente je Mitglied (Bescheinigungen, Zertifikate); nur die Empfaengerin/der Empfaenger sieht sie im Intranet.
- Globale Suche — ein Suchfeld ueber Beitraege, Termine, Dokumente und Meine Dateien; respektiert Sichtbarkeit und Gruppen.
- Benachrichtigungen — Glocke (und optional E-Mail) bei neuen Beitraegen, respektiert Gruppen-Sichtbarkeit; Opt-out je Mitglied im Profil.
- Reaktionen & Kommentare — Daumen/Herz und Kommentare auf Beitraegen; je Beitrag abschaltbar, Kommentare in der Verwaltung moderierbar.
- Umfragen — optionale informelle Umfrage je Beitrag; Ergebnis als Balken nach der eigenen Stimme (rechtsverbindliche Abstimmungen bleiben in Vereo).
- Gruppen-Raeume — je Gremium eine Seite mit dessen Beitraegen, Terminen, Dokumenten und Mitgliedern; erreichbar ueber "Meine Gruppen".
- Mitgliederverzeichnis — freiwilliges Opt-in mit feldweiser Freigabe (E-Mail/Telefon/Kurzbeschreibung); nur zugestimmte Mitglieder sind sichtbar.
- Wissensdatenbank — Artikel in Kategorien (Rich-Text), gruppen-sichtbar und in die globale Suche eingebunden.
- Onboarding — Willkommens-Checkliste fuer neue Mitglieder auf der Startseite; abhakbar, ausblendbar und selbst-erledigend.
- Beitragsstatistik — anonymer Aufrufzaehler je Beitrag (einmal pro Sitzung), sichtbar in der Verwaltung.
- PWA — installierbar auf Homescreen/Desktop, gebrandete App-Icons, eigenes App-Fenster und Offline-Grundgeruest.
- Konfiguration — Branding, Allgemein, E-Mail, SSO (Keycloak), Dateispeicher (lokal/S3), Datensicherung, Benutzermenue, Audit- und Mail-Log.
- Benutzer & Rollen — RBAC (spatie/laravel-permission), Rollen
super_adminundredaktion;entra:ensure-rbaclegt Rollen/Berechtigungen idempotent an.
Geplant
- Siehe docs/ROADMAP.md
- Mitgliederverzeichnis (Opt-in) mit Live-Daten aus Vereo
Stack
Laravel 13, Filament v5, PostgreSQL 16, FrankenPHP, Docker Compose (Portainer).
Details zum Betrieb: docker-compose.yml (Registry-Image) bzw.
docker-compose.build.yml (lokaler Build). Der Entrypoint erzeugt beim ersten
Start APP_KEY und optional den initialen Admin (ADMIN_EMAIL/ADMIN_PASSWORD).
Entwicklung
composer install
cp .env.example .env && php artisan key:generate
php artisan migrate --seed
php artisan serve
Tests: php artisan test (SQLite in-memory). Code-Stil: vendor/bin/pint --dirty.
Entwicklung
Grundsätze für Erweiterungen – was in den Kern gehört und was wegschaltbar sein muss:
docs/entwicklung/grundsaetze.md.