feat(server): add private key creation to IP server form

This commit is contained in:
Andras Bacsai committed 2026-07-08 13:05:29 +02:00
1 parent e200d881f5
commit 9b8aeb4758
3 files changed
+193 -10

No files matched your search

+41
View File
@@ -3,6 +3,7 @@
namespace App\Livewire\Server\New;
use App\Enums\ProxyTypes;
use App\Models\PrivateKey;
use App\Models\Server;
use App\Models\Team;
use App\Rules\ValidServerIp;
@@ -84,11 +85,51 @@ class ByIp extends Component
]);
}
public function getListeners(): array
{
return [
'privateKeyCreated' => 'handlePrivateKeyCreated',
];
}
public function setPrivateKey(string $private_key_id)
{
$this->private_key_id = $private_key_id;
}
public function generatePrivateKey(string $type): void
{
try {
$this->authorize('create', PrivateKey::class);
if (! in_array($type, ['ed25519', 'rsa'], true)) {
$this->dispatch('error', 'Invalid private key type.');
return;
}
$keyData = PrivateKey::generateNewKeyPair($type);
$privateKey = PrivateKey::createAndStore([
'name' => $keyData['name'],
'description' => $keyData['description'],
'private_key' => $keyData['private_key'],
'team_id' => currentTeam()->id,
]);
$this->handlePrivateKeyCreated($privateKey->id);
$this->dispatch('success', 'Private key created successfully.');
} catch (\Throwable $e) {
handleError($e, $this);
}
}
public function handlePrivateKeyCreated($keyId): void
{
$this->private_keys = PrivateKey::ownedAndOnlySShKeys()->where('id', '!=', 0)->get();
$this->private_key_id = $keyId;
$this->resetErrorBag('private_key_id');
}
public function instantSave()
{
// $this->dispatch('success', 'Application settings updated!');