assertEventBelongsToTenant($request, $event); return $this->resource($event); } public function enable(Request $request, Event $event): JsonResponse { $this->assertEventBelongsToTenant($request, $event); $event->loadMissing('tenant'); $updated = $this->provisioner->enable($event); return response()->json([ 'message' => __('Photobooth-Zugang aktiviert.'), 'data' => $this->resource($updated), ]); } public function rotate(Request $request, Event $event): JsonResponse { $this->assertEventBelongsToTenant($request, $event); $event->loadMissing('tenant'); $updated = $this->provisioner->rotate($event); return response()->json([ 'message' => __('Zugangsdaten neu generiert.'), 'data' => $this->resource($updated), ]); } public function disable(Request $request, Event $event): JsonResponse { $this->assertEventBelongsToTenant($request, $event); $event->loadMissing('tenant'); $updated = $this->provisioner->disable($event); return response()->json([ 'message' => __('Photobooth-Zugang deaktiviert.'), 'data' => $this->resource($updated), ]); } protected function resource(Event $event): PhotoboothStatusResource { return PhotoboothStatusResource::make([ 'event' => $event->fresh(), 'settings' => PhotoboothSetting::current(), ]); } protected function assertEventBelongsToTenant(Request $request, Event $event): void { $tenantId = (int) $request->attributes->get('tenant_id'); if ($tenantId !== (int) $event->tenant_id) { abort(403, 'Event gehört nicht zu diesem Tenant.'); } } }