diff --git a/cura/OAuth2/AuthorizationHelpers.py b/cura/OAuth2/AuthorizationHelpers.py index 8224e7b51f..f4a29962a4 100644 --- a/cura/OAuth2/AuthorizationHelpers.py +++ b/cura/OAuth2/AuthorizationHelpers.py @@ -41,7 +41,10 @@ class AuthorizationHelpers: "code_verifier": verification_code, "scope": self._settings.CLIENT_SCOPES if self._settings.CLIENT_SCOPES is not None else "", } - return self.parseTokenResponse(requests.post(self._token_url, data = data)) # type: ignore + try: + return self.parseTokenResponse(requests.post(self._token_url, data = data)) # type: ignore + except requests.exceptions.ConnectionError: + return AuthenticationResponse(success=False, err_message="Unable to connect to remote server") ## Request the access token from the authorization server using a refresh token. # \param refresh_token: @@ -54,7 +57,10 @@ class AuthorizationHelpers: "refresh_token": refresh_token, "scope": self._settings.CLIENT_SCOPES if self._settings.CLIENT_SCOPES is not None else "", } - return self.parseTokenResponse(requests.post(self._token_url, data = data)) # type: ignore + try: + return self.parseTokenResponse(requests.post(self._token_url, data = data)) # type: ignore + except requests.exceptions.ConnectionError: + return AuthenticationResponse(success=False, err_message="Unable to connect to remote server") @staticmethod ## Parse the token response from the authorization server into an AuthenticationResponse object. diff --git a/cura/OAuth2/AuthorizationService.py b/cura/OAuth2/AuthorizationService.py index e8b9405ecd..a4214ee958 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -119,8 +119,12 @@ class AuthorizationService: if self._auth_data is None or self._auth_data.refresh_token is None: Logger.log("w", "Unable to refresh access token, since there is no refresh token.") return - self._storeAuthData(self._auth_helpers.getAccessTokenUsingRefreshToken(self._auth_data.refresh_token)) - self.onAuthStateChanged.emit(logged_in = True) + response = self._auth_helpers.getAccessTokenUsingRefreshToken(self._auth_data.refresh_token) + if response.success: + self._storeAuthData(response) + self.onAuthStateChanged.emit(logged_in = True) + else: + self.onAuthStateChanged(logged_in = False) ## Delete the authentication data that we have stored locally (eg; logout) def deleteAuthData(self) -> None: