49 lines
1.5 KiB
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');
|
|
}
|
|
}
|