diff --git a/app/Services/ServiceTabPbgTask.php b/app/Services/ServiceTabPbgTask.php index 86895e6..001b2ab 100644 --- a/app/Services/ServiceTabPbgTask.php +++ b/app/Services/ServiceTabPbgTask.php @@ -115,10 +115,15 @@ class ServiceTabPbgTask } catch (\GuzzleHttp\Exception\ClientException $e) { if ($e->getCode() === 401 && !$retriedAfter401) { Log::warning("401 Unauthorized - Refreshing token and retrying..."); - $this->refreshToken(); - $options['headers']['Authorization'] = "Bearer {$this->user_token}"; - $retriedAfter401 = true; - continue; // Retry with new token + try{ + $this->refreshToken(); + $options['headers']['Authorization'] = "Bearer {$this->user_token}"; + $retriedAfter401 = true; + continue; + }catch(\Exception $refreshError){ + Log::error("Token refresh and login failed: " . $refreshError->getMessage()); + return false; + } } throw $e; @@ -221,10 +226,15 @@ class ServiceTabPbgTask } catch (\GuzzleHttp\Exception\ClientException $e) { if ($e->getCode() === 401 && !$retriedAfter401) { Log::warning("401 Unauthorized - Refreshing token and retrying..."); - $this->refreshToken(); - $options['headers']['Authorization'] = "Bearer {$this->user_token}"; - $retriedAfter401 = true; - continue; + try{ + $this->refreshToken(); + $options['headers']['Authorization'] = "Bearer {$this->user_token}"; + $retriedAfter401 = true; + continue; + }catch(\Exception $refreshError){ + Log::error("Token refresh and login failed: " . $refreshError->getMessage()); + return false; + } } return false; @@ -295,10 +305,15 @@ class ServiceTabPbgTask } catch (\GuzzleHttp\Exception\ClientException $e) { if ($e->getCode() === 401 && !$retriedAfter401) { Log::warning("401 Unauthorized - Refreshing token and retrying..."); - $this->refreshToken(); - $options['headers']['Authorization'] = "Bearer {$this->user_token}"; - $retriedAfter401 = true; - continue; + try{ + $this->refreshToken(); + $options['headers']['Authorization'] = "Bearer {$this->user_token}"; + $retriedAfter401 = true; + continue; + }catch(\Exception $refreshError){ + Log::error("Token refresh and login failed: " . $refreshError->getMessage()); + return false; + } } return false; @@ -330,22 +345,35 @@ class ServiceTabPbgTask private function refreshToken() { try { - $newAuthToken = $this->service_token->refresh_token($this->user_refresh_token); + if (!isset($newAuthToken['access']) || !isset($newAuthToken['refresh'])) { + throw new \Exception("Invalid refresh token response."); + } + $this->user_token = $newAuthToken['access']; $this->user_refresh_token = $newAuthToken['refresh']; - if (!$this->user_token) { - Log::error("Token refresh failed: No token received."); - throw new \Exception("Failed to refresh token."); - } - Log::info("Token refreshed successfully."); } catch (\Exception $e) { - Log::error("Token refresh error: " . $e->getMessage()); - throw new \Exception("Token refresh failed."); + Log::error("Token refresh failed: " . $e->getMessage()); + Log::info("Attempting to log in again..."); + + try { + $loginAgain = $this->service_token->get_token(); // Login again + + if (!isset($loginAgain['access']) || !isset($loginAgain['refresh'])) { + throw new \Exception("Invalid login response."); + } + + $this->user_token = $loginAgain['access']; + $this->user_refresh_token = $loginAgain['refresh']; + + Log::info("Re-login successful."); + } catch (\Exception $e) { + Log::error("Re-login failed: " . $e->getMessage()); + throw new \Exception("Both token refresh and login failed.". $e->getMessage()); + } } } - }