- Hinzufügen der DependencyInjection-Konfiguration für das Billing-Modul. - Erstellen der Invoice-Entity mit API-Ressourcen und Berechtigungen. - Konfigurieren der Services in services.yaml für das Billing-Modul. - Implementieren von CLI-Commands zur Verwaltung von Modul-Lizenzen und zur Auflistung installierter Module. - Erstellen eines API-Controllers zur Verwaltung von Modulen und Lizenzen. - Hinzufügen eines EventListeners für das Booten von Modulen. - Definieren von Interfaces für Lizenzvalidierung und Modul-Plugins. - Implementieren der ModuleRegistry zur Verwaltung und Booten von Modulen. - Erstellen eines LicenseValidator-Services zur Validierung und Registrierung von Lizenzen.
7.4 KiB
7.4 KiB
Plugin-System: Schnellstart-Anleitung
🚀 Quick Start (5 Minuten)
1. Environment konfigurieren
# .env.local erstellen
cp .env.plugin.example .env.local
# Werte anpassen
nano .env.local
Minimal-Konfiguration:
LICENSE_SERVER_URL=https://license.mycrm.local
INSTANCE_ID=$(openssl rand -hex 16)
2. Cache leeren
php bin/console cache:clear
3. Test: System überprüfen
# Sollte keine Module zeigen (noch keine installiert)
php bin/console app:module:list
Erwartete Ausgabe:
Installierte Module
===================
[WARNING] Keine Module installiert.
✅ Core-System ist bereit!
📦 Modul installieren (Beispiel)
Schritt 1: Composer-Repository hinzufügen
composer config repositories.mycrm-billing vcs https://github.com/your-org/mycrm-billing-module
Schritt 2: Modul installieren
composer require mycrm/billing-module
Schritt 3: Bundle registrieren (falls nicht automatisch)
// config/bundles.php
return [
// ... bestehende Bundles
MyCRM\BillingModule\BillingBundle::class => ['all' => true],
];
Schritt 4: Datenbank-Migrationen
php bin/console doctrine:migrations:migrate
Schritt 5: Cache leeren
php bin/console cache:clear
Schritt 6: Modul-Status prüfen
php bin/console app:module:list
Erwartete Ausgabe:
Installierte Module
===================
ID Name Version Lizenziert Aktiv Lizenz-Info
billing Rechnungsmodul 1.0.0 ✗ ✗ Kein Lizenzschlüssel vorhanden
Statistik
---------
Gesamt: 1 Module
Lizenziert: 0 Module
Aktiv: 0 Module
✅ Modul installiert, aber noch nicht lizenziert!
🔑 Lizenz aktivieren
Option A: CLI (empfohlen)
# Interaktiv (Lizenzschlüssel wird versteckt eingegeben)
php bin/console app:module:license billing
# Direkt mit Key
php bin/console app:module:license billing eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Option B: Manuell in .env.local
# .env.local
LICENSE_BILLING=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Schritt 2: Validieren
php bin/console app:module:license billing --validate
Erwartete Ausgabe:
Validiere Lizenz für Modul "billing"
[OK] Lizenz gültig!
Lizenz-Informationen
--------------------
Eigenschaft Wert
Status ✓ Gültig
Lizenziert an Firma GmbH
Läuft ab 31.12.2026 23:59:59
Verbleibend 365 Tage
Features invoicing, recurring_billing
Schritt 3: Cache leeren (wichtig!)
php bin/console cache:clear
Schritt 4: Status prüfen
php bin/console app:module:list
Erwartete Ausgabe:
ID Name Version Lizenziert Aktiv Lizenz-Info
billing Rechnungsmodul 1.0.0 ✓ ✓ Firma GmbH, Läuft ab: 31.12.2026
Statistik
---------
Gesamt: 1 Module
Lizenziert: 1 Module
Aktiv: 1 Module
✅ Modul ist aktiv und kann verwendet werden!
🌐 Admin-Interface verwenden
Schritt 1: Route hinzufügen
// assets/js/router.js
{
path: '/admin/modules',
name: 'module-management',
component: () => import('@/views/ModuleManagement.vue'),
meta: {
requiresAuth: true,
requiresRole: 'ROLE_ADMIN'
}
}
Schritt 2: Menü-Eintrag hinzufügen (optional)
<!-- assets/js/layout/AppMenu.vue -->
<template v-if="hasRole('ROLE_ADMIN')">
<li>
<router-link to="/admin/modules">
<i class="pi pi-box"></i>
<span>Module</span>
</router-link>
</li>
</template>
Schritt 3: Frontend neu bauen
npm run build
# oder für Development:
npm run watch
Schritt 4: Admin-UI aufrufen
Navigiere zu: http://localhost:8000/admin/modules
✅ Grafische Verwaltung verfügbar!
🔧 Troubleshooting
Problem: "Modul wird nicht erkannt"
# Prüfen: Bundle registriert?
cat config/bundles.php | grep BillingBundle
# Prüfen: Autoloading aktuell?
composer dump-autoload
# Cache löschen
php bin/console cache:clear
Problem: "Lizenz ungültig"
# Validierung mit Details
php bin/console app:module:license billing --validate
# Lizenz neu eingeben
php bin/console app:module:license billing
# Cache löschen (wichtig!)
php bin/console cache:clear
Problem: "Lizenzserver nicht erreichbar"
# Prüfen: Environment-Variable gesetzt?
echo $LICENSE_SERVER_URL
# Prüfen: Server erreichbar?
curl https://license.mycrm.local/api/validate
# Offline-Modus (Grace Period): Gecachte Lizenz wird verwendet
php bin/console app:module:list
# → Sollte "Lizenz gecacht (Offline-Modus)" zeigen
Problem: "Modul bootet nicht"
# Logs prüfen
tail -f var/log/dev.log | grep -i module
# Doctrine-Schema validieren
php bin/console doctrine:schema:validate
# Alle Abhängigkeiten prüfen
php bin/console app:module:list
# → Zeigt eventuelle Boot-Fehler an
📚 Nächste Schritte
Für Administratoren:
- ✅ Core-System konfiguriert
- ✅ Erstes Modul installiert
- ✅ Lizenz aktiviert
- → Weitere Module installieren (siehe vollständige Anleitung)
- → Benutzer-Rechte konfigurieren (Role-Permission-System)
Für Entwickler:
- → Eigenes Modul entwickeln (siehe
PLUGIN_SYSTEM.md) - → Beispiel-Code studieren (
docs/example-module/) - → Tests schreiben (Unit, Integration, Functional)
Für DevOps:
- → Lizenzserver implementieren (externe Komponente)
- → Monitoring einrichten (Lizenz-Ablaufdaten)
- → Deployment-Pipeline (Composer, Migrations, Cache)
📖 Weiterführende Dokumentation
- Vollständige Anleitung:
docs/PLUGIN_SYSTEM.md - Architektur-Übersicht:
docs/PLUGIN_SYSTEM_SUMMARY.md - Modul-Struktur:
docs/EXAMPLE_MODULE_STRUCTURE.md - Code-Beispiele:
docs/example-module/
💡 Tipps
Tipp 1: Lizenzschlüssel sicher speichern
# Nie in Git committen!
echo "LICENSE_*" >> .gitignore
# In Production: Environment-Variablen nutzen
# Oder: Verschlüsselte Secrets (Vault, etc.)
Tipp 2: Development vs. Production
# Development: Test-Lizenzen mit langem Ablaufdatum
LICENSE_BILLING=dev-license-key-with-long-expiry
# Production: Produktiv-Lizenzen überwachen
# Monitoring: Alarm 30 Tage vor Ablauf
Tipp 3: Modul-Updates
# Composer-Update für einzelnes Modul
composer update mycrm/billing-module
# Migrations prüfen
php bin/console doctrine:migrations:status
# Migrations ausführen
php bin/console doctrine:migrations:migrate
# Cache leeren (wichtig!)
php bin/console cache:clear
Tipp 4: Offline-Betrieb planen
# Grace Period: 7 Tage nach letzter Validierung
# Vor längeren Offline-Phasen: Cache auffrischen
php bin/console app:module:license billing --validate
✅ Checkliste
Vor Produktiv-Deployment:
.env.localmit allen Lizenzen auf Server deployedLICENSE_SERVER_URLkorrekt konfiguriertINSTANCE_IDeindeutig generiert- Alle Module installiert (
composer install) - Migrations ausgeführt (
doctrine:migrations:migrate) - Cache geleert (
cache:clear) - Lizenzen validiert (
app:module:list) - Backup-Strategie inkludiert
.env.local - Monitoring für Lizenz-Ablaufdaten eingerichtet
- Firewall erlaubt Zugriff auf Lizenzserver
Bei Fragen: Siehe vollständige Dokumentation in docs/PLUGIN_SYSTEM.md