EShip Browser Extension
Chrome Extension (Manifest V3) fuer die Authentifizierung und Tool-Verwaltung der EShip Web-App.
Funktionen
- Authentifizierung: Login via Appwrite (Email/Password)
- Website-Schutz: Blockiert die Web-App fuer nicht-authentifizierte Benutzer
- Tools-System: Aktivierbare Tools mit individuellen Einstellungen
- Live-Updates: Einstellungen werden sofort auf der Website angewendet
Projektstruktur
Extension/
├── manifest.json # Chrome Extension Manifest (MV3)
├── config.js # Appwrite Konfiguration
├── background/
│ └── service-worker.js # Background Service Worker
├── popup/
│ ├── popup.html # Popup UI
│ ├── popup.css # Popup Styles
│ └── popup.js # Popup Logic
├── content/
│ └── content-script.js # Content Script fuer Website
└── lib/
└── appwrite.min.js # Appwrite SDK Bundle
Installation
1. Appwrite API Key erstellen
WICHTIG: Du musst einen API Key in Appwrite erstellen:
- Gehe zu https://cloud.appwrite.io
- Waehle dein Projekt
- Settings > API Keys > "Create API Key"
- Scopes:
users.read,users.write,sessions.write - Kopiere den API Key (wird nur einmal angezeigt!)
Siehe auch: setup/API_KEY_SETUP.md fuer detaillierte Anleitung.
2. Extension konfigurieren
Bearbeite Extension/config.js:
var APPWRITE_CONFIG = {
endpoint: 'https://cloud.appwrite.io/v1',
projectId: '696b82bb0036d2e547ad',
apiKey: 'DEIN_API_KEY_HIER' // WICHTIG: API Key hier einfuegen
};
3. Extension in Chrome laden
- Oeffne Chrome und navigiere zu
chrome://extensions - Aktiviere den Entwicklermodus (Toggle oben rechts)
- Klicke auf Entpackte Erweiterung laden
- Waehle den
Extension/Ordner aus - Die Extension erscheint in der Toolbar
4. Server starten
cd Server
npm install
npm run dev
Der Server startet unter http://localhost:5173
Testen
Auth-Flow testen
-
Ohne Login:
- Oeffne
http://localhost:5173 - Die Seite zeigt einen "Zugriff gesperrt" Bildschirm
- Oeffne
-
Login durchfuehren:
- Klicke auf das Extension-Icon in der Toolbar
- Gib deine Appwrite-Zugangsdaten ein
- Klicke auf "Anmelden"
- Nach erfolgreichem Login wird die Website automatisch geoeffnet
-
Nach Login:
- Die Website ist voll zugaenglich
- Das Extension-Popup zeigt das Tools-Menu
Tools testen
- Oeffne das Extension-Popup (nach Login)
- Aktiviere das Tool "Preise hervorheben"
- Auf der Website werden alle
.priceElemente mit rotem Rahmen hervorgehoben - Aendere den Selector oder die Farbe in den Tool-Einstellungen
- Die Aenderungen werden sofort angewendet
Demo-Preise
Die Web-App enthaelt Demo-Preiselemente in der unteren rechten Ecke zum Testen des Highlight-Tools.
Tools-Registry
Tools werden in background/service-worker.js definiert:
const DEFAULT_TOOLS = [
{
id: 'highlight_prices',
name: 'Preise hervorheben',
enabled: false,
settings: {
selector: '.price',
borderColor: '#ff0000',
borderWidth: '2px'
}
}
];
Neues Tool hinzufuegen
- Fuege das Tool zur
DEFAULT_TOOLSListe hinzu - Implementiere die Logik in
content/content-script.js:function applyTool(tool) { switch (tool.id) { case 'dein_tool_id': applyDeinTool(tool.settings); break; } }
Message-Kommunikation
Popup <-> Service Worker
| Action | Beschreibung |
|---|---|
CHECK_AUTH |
Prueft Auth-Status |
LOGIN |
Login mit Email/Password |
LOGOUT |
Beendet Session |
GET_SETTINGS |
Laedt Tool-Einstellungen |
SAVE_SETTINGS |
Speichert Tool-Einstellungen |
Service Worker <-> Content Script
| Action | Beschreibung |
|---|---|
SETTINGS_UPDATED |
Neue Tool-Einstellungen |
AUTH_CHANGED |
Auth-Status geaendert |
Sicherheit
- Passwoerter werden nie im Klartext gespeichert
- Authentifizierung laeuft vollstaendig ueber Appwrite Sessions
- Session-Cookies sind HTTP-only und werden von Appwrite verwaltet
- Tool-Einstellungen werden in
chrome.storage.syncgespeichert
Fehlerbehebung
Extension funktioniert nicht
- Pruefe die Browser-Konsole auf Fehler
- Oeffne
chrome://extensionsund klicke auf "Service Worker" bei der Extension - Pruefe die Konsole des Service Workers
Login schlaegt fehl
- Pruefe die Appwrite-Konfiguration in
config.js - Stelle sicher, dass der API Key gesetzt ist
- Pruefe, ob der API Key die richtigen Scopes hat (
users.read,users.write,sessions.write) - Stelle sicher, dass der Appwrite-Benutzer existiert
- Pruefe, ob die Appwrite-Plattform-Einstellungen den Extension-Zugriff erlauben
Website bleibt blockiert
- Lade die Website neu nach dem Login
- Pruefe, ob die URL in
manifest.jsonuntercontent_scripts.matchessteht - Pruefe die Content-Script-Konsole (F12 auf der Website)
Bekannte Einschraenkungen
- Die Extension funktioniert nur auf den konfigurierten URLs (localhost:5173, localhost:3000)
- Fuer Produktions-URLs muss
manifest.jsonangepasst werden - Icons sind nicht enthalten (Chrome verwendet Standard-Icon)