75 - Fix error handling for invalid instance URLs
This commit is contained in:
parent
3e23dad5c5
commit
b574785d1e
3 changed files with 15 additions and 9 deletions
|
|
@ -142,7 +142,14 @@ public function createPlatformAccount(): void
|
|||
$fullInstanceUrl = 'https://' . $this->instanceUrl;
|
||||
|
||||
try {
|
||||
// Create or get platform instance
|
||||
// Authenticate with Lemmy API first (before creating any records)
|
||||
$authResponse = $this->lemmyAuthService->authenticate(
|
||||
$fullInstanceUrl,
|
||||
$this->username,
|
||||
$this->password
|
||||
);
|
||||
|
||||
// Only create platform instance after successful authentication
|
||||
$platformInstance = PlatformInstance::firstOrCreate([
|
||||
'url' => $fullInstanceUrl,
|
||||
'platform' => 'lemmy',
|
||||
|
|
@ -151,13 +158,6 @@ public function createPlatformAccount(): void
|
|||
'is_active' => true,
|
||||
]);
|
||||
|
||||
// Authenticate with Lemmy API
|
||||
$authResponse = $this->lemmyAuthService->authenticate(
|
||||
$fullInstanceUrl,
|
||||
$this->username,
|
||||
$this->password
|
||||
);
|
||||
|
||||
// Create platform account
|
||||
$platformAccount = PlatformAccount::create([
|
||||
'platform' => 'lemmy',
|
||||
|
|
|
|||
|
|
@ -73,10 +73,12 @@ public function login(string $username, string $password): ?string
|
|||
if ($idx === 0 && in_array('http', $schemesToTry, true)) {
|
||||
continue;
|
||||
}
|
||||
return null;
|
||||
// Connection failed - throw exception to distinguish from auth failure
|
||||
throw new Exception('Connection failed: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// If we get here without a token, it's an auth failure (not connection)
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,10 @@ public function authenticate(string $instanceUrl, string $username, string $pass
|
|||
if (str_contains($e->getMessage(), 'Rate limited by')) {
|
||||
throw new PlatformAuthException(PlatformEnum::LEMMY, $e->getMessage());
|
||||
}
|
||||
// Check if it's a connection failure
|
||||
if (str_contains($e->getMessage(), 'Connection failed')) {
|
||||
throw new PlatformAuthException(PlatformEnum::LEMMY, 'Connection failed');
|
||||
}
|
||||
// For other exceptions, throw a clean PlatformAuthException
|
||||
throw new PlatformAuthException(PlatformEnum::LEMMY, 'Connection failed');
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue