CluPilotCloud/app/Livewire/Admin/ConfirmReleaseUpdateLock.php

49 lines
1.5 KiB
PHP

<?php
namespace App\Livewire\Admin;
use App\Services\Deployment\UpdateChannel;
use LivewireUI\Modal\ModalComponent;
/**
* Rückfrage, bevor ein Prozess auf dem Wirt beendet wird (R23).
*
* Es steht hier, was gleich stirbt — PID, Laufzeit und Kommandozeile aus dem
* Lebenszeichen des Agenten —, und zwar VORHER. Das ist der ganze Sinn der
* Rückfrage: eine Meldung hinterher wäre keine.
*
* Das Modal mutiert nichts. Es wirft ein Ereignis, das
* App\Livewire\Admin\Settings auffängt; die Berechtigungsprüfung bleibt dort,
* wo sie schon steht, statt hier verdoppelt zu werden.
*
* Der Halter wird HIER neu gelesen und nicht als Eigenschaft hereingereicht:
* ein Modal ist ohne die Route-Middleware der Seite erreichbar (R20), und ein
* vom Browser hydrierter Text wäre eine Angabe, die der Server nicht geprüft
* hat — ausgerechnet in der Zeile, die den Betreiber entscheiden lässt.
*/
class ConfirmReleaseUpdateLock extends ModalComponent
{
/** Was der Agent zuletzt als Sperrenhalter gesehen hat. */
public string $heldBy = '';
public function mount(): void
{
$this->authorize('deployment.unblock');
$this->heldBy = (string) (app(UpdateChannel::class)->state()['blocked_by'] ?? '');
}
public function confirm(): void
{
$this->authorize('deployment.unblock');
$this->dispatch('update-lock-release-confirmed');
$this->closeModal();
}
public function render()
{
return view('livewire.admin.confirm-release-update-lock');
}
}