This commit is contained in:
baodev0
2026-08-14 08:45:52 +07:00
parent 7314313198
commit b03ee9fc2d
23 changed files with 844 additions and 704 deletions
+35 -8
View File
@@ -34,14 +34,27 @@ class PleskClientService
->first();
if ($existing) {
return [
'error' => false,
'data' => [
'id' => $existing->plesk_client_id,
'login' => $existing->login,
'password' => Crypt::decryptString($existing->password),
],
];
if ($this->clientExists($server, (int) $existing->plesk_client_id)) {
return [
'error' => false,
'data' => [
'id' => $existing->plesk_client_id,
'login' => $existing->login,
'password' => Crypt::decryptString($existing->password),
],
];
}
// Cached client was deleted directly on Plesk (out-of-band) — the id is
// dead, so any call reusing it (e.g. owner_client on domain creation)
// fails with "Owner does not exist". Drop the stale row and re-provision.
Log::warning('Cached Plesk client no longer exists on server — re-creating', [
'plesk_client_id' => $existing->plesk_client_id,
'customer_id' => $customer->id,
'server_id' => $server->id,
]);
$existing->delete();
}
$login = $this->generateUsername($customer);
@@ -130,6 +143,20 @@ class PleskClientService
}
}
private function clientExists(DnsServer $server, int $pleskClientId): bool
{
try {
$response = $this->plesk->client($server, 15)
->get($this->plesk->url($server, 'clients', "/{$pleskClientId}"));
return $response->successful();
} catch (RequestException $e) {
Log::error('Plesk client existence check failed', ['error' => $e->getMessage(), 'plesk_client_id' => $pleskClientId]);
return false;
}
}
private function findByLogin(DnsServer $server, string $login): ?array
{
try {