diff --git a/cura/OAuth2/AuthorizationService.py b/cura/OAuth2/AuthorizationService.py index fc004e5e0d..8ec5232158 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -51,13 +51,11 @@ class AuthorizationService: # \return UserProfile if a user is logged in, None otherwise. # \sa _parseJWT def getUserProfile(self) -> Optional["UserProfile"]: - if not self._user_profile: - # If no user profile was stored locally, we try to get it from JWT. - try: - self._user_profile = self._parseJWT() - except requests.exceptions.ConnectionError: - # Unable to get connection, can't login. - return None + try: + self._user_profile = self._parseJWT() + except requests.exceptions.ConnectionError: + # Unable to get connection, can't login. + return None if not self._user_profile and self._auth_data: # If there is still no user profile from the JWT, we have to log in again. @@ -87,13 +85,13 @@ class AuthorizationService: return self._auth_helpers.parseJWT(self._auth_data.access_token) - # Get the access token as provided by the repsonse data. + # Get the access token as provided by the response data. def getAccessToken(self) -> Optional[str]: if not self.getUserProfile(): # We check if we can get the user profile. # If we can't get it, that means the access token (JWT) was invalid or expired. - Logger.log("w", "Unable to get the user profile.") - return None + # In that case we try to refresh the access token. + self.refreshAccessToken() if self._auth_data is None: Logger.log("d", "No auth data to retrieve the access_token from") diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py index 9c1e8e1cdb..adff94bbbc 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py @@ -103,8 +103,9 @@ class CloudApiClient: request = QNetworkRequest(QUrl(path)) if content_type: request.setHeader(QNetworkRequest.ContentTypeHeader, content_type) - if self._account.isLoggedIn: - request.setRawHeader(b"Authorization", "Bearer {}".format(self._account.accessToken).encode()) + access_token = self._account.accessToken + if access_token: + request.setRawHeader(b"Authorization", "Bearer {}".format(access_token).encode()) return request ## Parses the given JSON network reply into a status code and a dictionary, handling unexpected errors as well.