117 lines
3.7 KiB
Markdown
117 lines
3.7 KiB
Markdown
# Admin-Panel Setup
|
|
|
|
Das Admin-Panel wurde erfolgreich erstellt! Hier ist die Anleitung zur Einrichtung.
|
|
|
|
## Was wurde erstellt:
|
|
|
|
1. **Admin-Panel Seite** (`/admin`) - Verwaltung der Dropdown-Optionen
|
|
2. **useAdminConfig Hook** - Lädt und speichert die Konfiguration
|
|
3. **Navigation erweitert** - Admin-Link erscheint für Admin-Benutzer
|
|
4. **CreateTicketModal angepasst** - Verwendet jetzt die konfigurierten Werte
|
|
|
|
## Schritt 1: Config Collection in Appwrite erstellen
|
|
|
|
1. Gehe zu `https://appwrite.webklar.com`
|
|
2. Öffne dein Projekt **woms**
|
|
3. Gehe zu **Databases** → **woms-database**
|
|
4. Klicke auf **Create Collection**
|
|
5. **Collection ID**: `config`
|
|
6. **Name**: `Admin Configuration`
|
|
|
|
### Attribute hinzufügen:
|
|
|
|
| Attribut Name | Typ | Größe | Required | Array |
|
|
|--------------|-----|-------|----------|-------|
|
|
| `ticketTypes` | string | - | - | ✓ |
|
|
| `systems` | string | - | - | ✓ |
|
|
| `responseLevels` | string | - | - | ✓ |
|
|
| `serviceTypes` | string | - | - | ✓ |
|
|
| `priorities` | string | - | - | ✓ |
|
|
|
|
**Wichtig:** Alle Attribute müssen als **Array** konfiguriert sein!
|
|
|
|
### Berechtigungen:
|
|
|
|
- **Read**: `Any` (damit alle Benutzer die Optionen sehen können)
|
|
- **Create**: `Users` (nur eingeloggte Benutzer können erstellen)
|
|
- **Update**: `Users` (nur eingeloggte Benutzer können aktualisieren)
|
|
- **Delete**: `Users` (optional)
|
|
|
|
## Schritt 2: Admin-Berechtigung konfigurieren
|
|
|
|
Aktuell wird ein Benutzer als Admin erkannt, wenn:
|
|
- Die Email `admin` enthält, ODER
|
|
- Die Email `kenso@webklar.com` ist, ODER
|
|
- Der Benutzer ein `admin` Label hat
|
|
|
|
### Option A: Email-basierte Erkennung (aktuell implementiert)
|
|
|
|
Die Admin-Erkennung erfolgt in:
|
|
- `src/pages/AdminPage.jsx` (Zeile ~10)
|
|
- `src/components/Navbar.jsx` (Zeile ~29)
|
|
|
|
Du kannst die Bedingung anpassen:
|
|
|
|
```javascript
|
|
const isAdmin = user?.email?.includes('admin') ||
|
|
user?.email === 'deine@email.com' ||
|
|
user?.labels?.includes('admin')
|
|
```
|
|
|
|
### Option B: Appwrite Labels verwenden
|
|
|
|
1. Gehe zu **Auth** → **Users** im Appwrite Dashboard
|
|
2. Wähle einen Benutzer aus
|
|
3. Füge ein **Label** hinzu: `admin`
|
|
4. Die Admin-Erkennung funktioniert dann automatisch
|
|
|
|
## Schritt 3: Admin-Panel verwenden
|
|
|
|
1. **Logge dich als Admin ein**
|
|
2. Gehe zu **Admin** in der Navigation (erscheint nur für Admins)
|
|
3. Bearbeite die Dropdown-Optionen:
|
|
- **Work Order Types** - Ticket-Typen
|
|
- **Affected Systems** - Betroffene Systeme
|
|
- **Response Levels** - Response-Ebenen
|
|
- **Service Types** - Service-Typen
|
|
- **Priorities** - Prioritäten (mit Value und Label)
|
|
4. Klicke auf **Konfiguration speichern**
|
|
|
|
## Schritt 4: Testen
|
|
|
|
1. **Als Admin:**
|
|
- Öffne das Admin-Panel
|
|
- Ändere einige Optionen
|
|
- Speichere die Konfiguration
|
|
|
|
2. **Als normaler Benutzer:**
|
|
- Erstelle ein neues Ticket
|
|
- Die geänderten Optionen sollten jetzt in den Dropdowns erscheinen
|
|
|
|
## Funktionsweise
|
|
|
|
- **Admin-Panel**: Lädt die Konfiguration aus Appwrite und erlaubt Bearbeitung
|
|
- **CreateTicketModal**: Lädt die Konfiguration automatisch und verwendet die Werte
|
|
- **Fallback**: Falls die Config nicht geladen werden kann, werden Standard-Werte verwendet
|
|
|
|
## Troubleshooting
|
|
|
|
### "Collection config not found"
|
|
- Stelle sicher, dass die Collection `config` erstellt wurde
|
|
- Überprüfe die Collection ID (muss genau `config` sein)
|
|
|
|
### "Zugriff verweigert"
|
|
- Überprüfe die Admin-Erkennung in `AdminPage.jsx`
|
|
- Stelle sicher, dass deine Email den Admin-Kriterien entspricht
|
|
|
|
### "Konfiguration wird nicht geladen"
|
|
- Überprüfe die Berechtigungen der `config` Collection
|
|
- Stelle sicher, dass **Read** auf `Any` oder `Users` gesetzt ist
|
|
|
|
### "Änderungen werden nicht übernommen"
|
|
- Überprüfe die **Update** Berechtigung der `config` Collection
|
|
- Stelle sicher, dass du als Admin eingeloggt bist
|
|
|
|
Viel Erfolg! 🚀
|
|
|