Files
vito/app/Actions/Site/DeleteSite.php
Saeed Vaziry c3f69f3247 #591 - sites
2025-06-04 08:08:20 +02:00

55 lines
1.3 KiB
PHP

<?php
namespace App\Actions\Site;
use App\Exceptions\SSHError;
use App\Models\Service;
use App\Models\Site;
use App\SSH\Services\PHP\PHP;
use App\SSH\Services\Webserver\Webserver;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class DeleteSite
{
/**
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function delete(Site $site, array $input): void
{
$this->validate($site, $input);
/** @var Service $service */
$service = $site->server->webserver();
/** @var Webserver $webserverHandler */
$webserverHandler = $service->handler();
$webserverHandler->deleteSite($site);
if ($site->isIsolated()) {
/** @var Service $phpService */
$phpService = $site->server->php();
/** @var PHP $php */
$php = $phpService->handler();
$php->removeFpmPool($site->user, $site->php_version, $site->id);
$os = $site->server->os();
$os->deleteIsolatedUser($site->user);
}
$site->delete();
}
private function validate(Site $site, array $input): void
{
Validator::make($input, [
'domain' => [
'required',
Rule::in($site->domain),
],
])->validate();
}
}