martin3r / platform-meetings
Installs: 60
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/martin3r/platform-meetings
This package is auto-updated.
Last update: 2025-11-20 20:23:31 UTC
README
Modul für Meeting-Verwaltung mit Microsoft 365 Calendar Integration.
Features
- ✅ Meeting-Verwaltung (erstellen, bearbeiten, löschen)
- ✅ Teilnehmer-Verwaltung mit RSVP-Status
- ✅ Agenda mit Kanban Board (analog zum Planner)
- ✅ Serientermine (Recurring Meetings)
- ✅ Microsoft 365 Calendar Integration
- ✅ Bidirektionaler RSVP-Sync (Outlook ↔ App)
- ✅ Webhook-Support für automatische Updates
Installation
- Modul in
composer.jsondes Hauptprojekts registrieren:
{
"repositories": [
{
"type": "path",
"url": "./platform/modules/meetings"
}
],
"require": {
"martin3r/platform-meetings": "*"
}
}
-
composer updateausführen -
Migrationen ausführen:
php artisan migrate
- Commands in
app/Console/Kernel.phpregistrieren (für Scheduler):
protected function schedule(Schedule $schedule) { $schedule->command('meetings:generate-recurring')->daily(); $schedule->command('meetings:renew-subscriptions')->daily(); }
Microsoft 365 Integration
1. Scopes erweitern
In platform/core/resources/views/components/teams-sso-script.blade.php:
microsoftTeams.authentication.getAuthToken({ resources: [ 'https://graph.microsoft.com/User.Read', 'https://graph.microsoft.com/Calendars.ReadWrite', 'https://graph.microsoft.com/Calendars.ReadWrite.Shared', 'https://graph.microsoft.com/OnlineMeetings.ReadWrite' // Optional für Teams-Meetings ], silent: true })
2. Token-Speicherung
Der MicrosoftGraphCalendarService benötigt Access Tokens. Aktuell werden diese aus:
- Request Header
X-Microsoft-Access-Token - Session
microsoft_access_token_{user_id}
TODO: Token-Persistierung implementieren:
- Option 1:
user_oauth_tokensTabelle - Option 2: User-Model erweitern mit
microsoft_access_token(encrypted) - Option 3: Laravel Socialite Token-Speicherung nutzen
3. Webhook-Endpoint konfigurieren
Der Webhook-Endpoint ist: /meetings/webhook/microsoft-calendar
Stelle sicher, dass dieser Endpoint öffentlich erreichbar ist (für Microsoft Graph API).
Verwendung
Meeting erstellen
use Platform\Meetings\Models\Meeting; use Platform\Meetings\Models\MeetingParticipant; use Platform\Meetings\Services\MicrosoftGraphCalendarService; $meeting = Meeting::create([ 'title' => 'Team Meeting', 'start_date' => now()->addDay(), 'end_date' => now()->addDay()->addHour(), 'location' => 'Konferenzraum A', ]); // Teilnehmer hinzufügen MeetingParticipant::create([ 'meeting_id' => $meeting->id, 'user_id' => $userId, 'role' => 'attendee', ]); // Zu Microsoft Calendar syncen $calendarService = app(MicrosoftGraphCalendarService::class); $calendarService->createEvent($meeting);
Serientermin erstellen
use Platform\Meetings\Models\RecurringMeeting; $recurring = RecurringMeeting::create([ 'title' => 'Wöchentliches Team Meeting', 'start_time' => '10:00:00', 'end_time' => '11:00:00', 'recurrence_type' => 'weekly', 'recurrence_interval' => 1, 'next_meeting_date' => now()->next('Monday'), ]); // Meetings werden automatisch durch Command generiert
RSVP-Status synchronisieren
$calendarService = app(MicrosoftGraphCalendarService::class); $calendarService->syncParticipantResponses($meeting);
Commands
meetings:generate-recurring- Generiert Meetings aus Serienterminen (täglich ausführen)meetings:renew-subscriptions- Erneuert ablaufende Webhook-Subscriptions (täglich ausführen)
Models
Meeting- Haupt-Entity für MeetingsMeetingParticipant- Teilnehmer mit RSVP-StatusMeetingAgendaItem- Agenda-Items für Kanban BoardMeetingAgendaSlot- Spalten für Kanban BoardRecurringMeeting- SerientermineAppointment- User-spezifische Termine (für Kalender-Sync)MicrosoftCalendarSubscription- Webhook-Subscriptions
Policies
MeetingPolicy- Berechtigungen für MeetingsAppointmentPolicy- Berechtigungen für Appointments
TODO / Offene Punkte
- Token-Speicherung: Access Tokens persistent speichern
- Scope-Erweiterung: Scopes in Teams SSO Script erweitern
- Teams-Meetings: Online-Meeting-Erstellung implementieren
- UI-Verbesserungen:
- Agenda Item Bearbeitung
- Teilnehmer-Verwaltung UI
- Recurring Meeting UI
- Error Handling: Besseres Error Handling für Graph API Calls
- Testing: Unit Tests für Services
Struktur
meetings/
├── composer.json
├── config/
│ └── meetings.php
├── database/
│ └── migrations/
├── resources/
│ └── views/
│ └── livewire/
├── routes/
│ ├── web.php
│ └── guest.php
└── src/
├── Console/
│ └── Commands/
├── Http/
│ └── Controllers/
├── Livewire/
├── Models/
├── Policies/
├── Services/
└── MeetingsServiceProvider.php