CluPilotCloud/app/Livewire/ConfirmReleaseBlock.php

53 lines
1.4 KiB
PHP

<?php
namespace App\Livewire;
use App\Livewire\Concerns\ResolvesCustomer;
use App\Models\SecurityBlock;
use LivewireUI\Modal\ModalComponent;
/**
* Bestaetigung vorm Aufheben einer eigenen Sperre (R23).
*
* Mutiert nichts: Security::onReleaseConfirmed() bleibt die einzige Stelle,
* die tatsaechlich freigibt — und die eigene Pruefung dort wiederholt genau
* das, was hier schon steht, weil ein Modal ohne die Route-Middleware der
* Seite erreichbar ist (R20). Deshalb loest auch dieses Modal den Kunden
* selbst auf, statt der uebergebenen uuid zu vertrauen, und zeigt bei einer
* fremden oder einer Host-Sperre lieber 404 als deren Adresse.
*/
class ConfirmReleaseBlock extends ModalComponent
{
use ResolvesCustomer;
public string $uuid;
public string $ip = '';
public function mount(string $uuid): void
{
$customer = $this->customer();
$block = SecurityBlock::query()
->where('uuid', $uuid)
->whereHas('instance', fn ($q) => $q->where('customer_id', $customer?->id))
->first();
abort_if($block === null, 404);
$this->uuid = $uuid;
$this->ip = $block->ip;
}
public function confirm(): void
{
$this->dispatch('block-release-confirmed', uuid: $this->uuid);
$this->closeModal();
}
public function render()
{
return view('livewire.confirm-release-block');
}
}