mirror of
https://github.com/vitodeploy/vito.git
synced 2025-04-17 17:01:37 +00:00
- refactoring architecture - fix incomplete ssh logs - code editor for scripts in the app - remove Jobs and SSHCommands
39 lines
1016 B
PHP
39 lines
1016 B
PHP
<?php
|
|
|
|
namespace App\Actions\SshKey;
|
|
|
|
use App\Enums\SshKeyStatus;
|
|
use App\Models\Server;
|
|
use App\Models\SshKey;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class DeployKeyToServer
|
|
{
|
|
public function deploy(User $user, Server $server, array $input): void
|
|
{
|
|
$this->validate($user, $input);
|
|
|
|
/** @var SshKey $sshKey */
|
|
$sshKey = SshKey::findOrFail($input['key_id']);
|
|
$server->sshKeys()->attach($sshKey, [
|
|
'status' => SshKeyStatus::ADDING,
|
|
]);
|
|
$server->os()->deploySSHKey($sshKey->public_key);
|
|
$sshKey->servers()->updateExistingPivot($server->id, [
|
|
'status' => SshKeyStatus::ADDED,
|
|
]);
|
|
}
|
|
|
|
private function validate(User $user, array $input): void
|
|
{
|
|
Validator::make($input, [
|
|
'key_id' => [
|
|
'required',
|
|
Rule::exists('ssh_keys', 'id')->where('user_id', $user->id),
|
|
],
|
|
])->validate();
|
|
}
|
|
}
|