<?php

namespace App\Livewire\Admin;

use App\Models\VpnPeer;
use LivewireUI\Modal\ModalComponent;

/**
 * Confirmation before a staff access gets a fresh keypair (R23). The reissue
 * itself still runs on Vpn::reissue(), unchanged — this only gates it and,
 * once confirmed, dispatches back so the page can show the new config.
 */
class ConfirmReissueVpnPeer extends ModalComponent
{
    public string $uuid;

    public string $name = '';

    public function mount(string $uuid): void
    {
        $peer = VpnPeer::query()->where('uuid', $uuid)->firstOrFail();
        $this->authorize('update', $peer);
        abort_if($peer->kind !== VpnPeer::KIND_STAFF, 404);

        $this->uuid = $uuid;
        $this->name = $peer->name;
    }

    public function confirm(): void
    {
        $this->dispatch('vpn-peer-reissue-confirmed', uuid: $this->uuid);
        $this->closeModal();
    }

    public function render()
    {
        return view('livewire.admin.confirm-reissue-vpn-peer');
    }
}
