Kundenportal
Das Kundenportal ist ein Self-Service-Portal fuer Endkunden mit eigener Authentifizierung, getrennt von den internen Agent-Konten.
Zugang
Das Portal ist unter /portal/login erreichbar. Kundenportal-Benutzer werden in einer separaten Tabelle (customer_portal_users) gespeichert und haben keinen Zugriff auf die interne ITSM-Oberflaeche.
Demo-Zugang (Seed-Daten):
- URL: http://localhost:8080/portal/login
- E-Mail:
portal@acme.example.com - Passwort:
changeme - Mandant:
demo-org
Funktionen
Meine Tickets
- Liste aller Tickets des Benutzerkunden
- Filter nach Status
- Ticket-Detail mit Kommentaren
Sichtbarkeit: Nur externe Kommentare (keine internen Agent-Notizen)
Neues Ticket erstellen
Portal-Benutzer koennen Tickets einreichen:
- Typ (Incident / Change)
- Titel und Beschreibung
- Prioritaet
Das Ticket wird mit source: 'portal' und der customer_id des Portal-Benutzers erstellt.
Kommentare
Portal-Benutzer koennen externe Kommentare hinterlassen. Agents sehen diese Kommentare in der regulaeren Ticket-Ansicht.
Wissensdatenbank
Alle veroeffentlichten, oeffentlichen KB-Artikel sind im Portal sichtbar:
- Suche
- Artikelkarten mit Kategorie und Tags
- Vollstaendige Artikelansicht (Markdown-gerendert)
Authentifizierung
Das Portal nutzt eigene JWT-Tokens mit dem portal: true-Flag. Die Mandantenzuordnung erfolgt ueber den tenantSlug beim Login.
{
"sub": "portal-user-id",
"email": "user@customer.example",
"displayName": "Max Mustermann",
"customerId": "customer-uuid",
"tenantId": "tenant-uuid",
"portal": true
}Portal-Benutzer verwalten
Portal-Benutzer werden derzeit direkt in der Datenbank erstellt. Eine Admin-Oberflaeche fuer die Portal-Benutzerverwaltung ist geplant.
REST API (Portal-Endpunkte)
POST /api/v1/portal/auth/login # Portal-Login (gibt JWT zurueck)
GET /api/v1/portal/auth/me # Eigenes Profil + Kundeninfo
GET /api/v1/portal/tickets # Eigene Tickets (paginiert)
GET /api/v1/portal/tickets/:id # Ticket-Detail + externe Kommentare
POST /api/v1/portal/tickets # Neues Ticket erstellen
POST /api/v1/portal/tickets/:id/comments # Kommentar hinzufuegen
GET /api/v1/portal/kb # Oeffentliche KB-Artikel (optional: ?q=)