diff --git a/cura/OAuth2/AuthorizationHelpers.py b/cura/OAuth2/AuthorizationHelpers.py index a654ee4bdb..569ba80659 100644 --- a/cura/OAuth2/AuthorizationHelpers.py +++ b/cura/OAuth2/AuthorizationHelpers.py @@ -40,6 +40,7 @@ class AuthorizationHelpers: """ data = { "client_id": self._settings.CLIENT_ID if self._settings.CLIENT_ID is not None else "", + "client_secret": self._settings.CLIENT_SECRET if self._settings.CLIENT_SECRET is not None else "", "redirect_uri": self._settings.CALLBACK_URL if self._settings.CALLBACK_URL is not None else "", "grant_type": "authorization_code", "code": authorization_code, @@ -64,6 +65,7 @@ class AuthorizationHelpers: Logger.log("d", "Refreshing the access token for [%s]", self._settings.OAUTH_SERVER_URL) data = { "client_id": self._settings.CLIENT_ID if self._settings.CLIENT_ID is not None else "", + "client_secret": self._settings.CLIENT_SECRET if self._settings.CLIENT_SECRET is not None else "", "redirect_uri": self._settings.CALLBACK_URL if self._settings.CALLBACK_URL is not None else "", "grant_type": "refresh_token", "refresh_token": refresh_token, diff --git a/cura/OAuth2/AuthorizationService.py b/cura/OAuth2/AuthorizationService.py index 62bf31982a..29c426e46f 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -31,20 +31,24 @@ class AuthorizationService: account information. """ - # Emit signal when authentication is completed. - onAuthStateChanged = Signal() + def __init__(self, + settings: "OAuth2Settings", + preferences: Optional["Preferences"] = None, + callback_auth_data_retrieved: Callable[[], None] = None) -> None: + # Emit signal when authentication is completed. + self.onAuthStateChanged = Signal() - # Emit signal when authentication failed. - onAuthenticationError = Signal() + # Emit signal when authentication failed. + self.onAuthenticationError = Signal() - accessTokenChanged = Signal() + self.accessTokenChanged = Signal() - def __init__(self, settings: "OAuth2Settings", preferences: Optional["Preferences"] = None) -> None: self._settings = settings self._auth_helpers = AuthorizationHelpers(settings) self._auth_url = "{}/authorize".format(self._settings.OAUTH_SERVER_URL) self._auth_data: Optional[AuthenticationResponse] = None self._user_profile: Optional["UserProfile"] = None + self._callback_auth_data_retrieved = self.getUserProfile if callback_auth_data_retrieved is None else callback_auth_data_retrieved self._preferences = preferences self._server = LocalAuthorizationServer(self._auth_helpers, self._onAuthStateChanged, daemon=True) self._currently_refreshing_token = False # Whether we are currently in the process of refreshing auth. Don't make new requests while busy. @@ -294,7 +298,7 @@ class AuthorizationService: self._auth_data = auth_data self._currently_refreshing_token = False if auth_data: - self.getUserProfile() + self._callback_auth_data_retrieved() self._preferences.setValue(self._settings.AUTH_DATA_PREFERENCE_KEY, json.dumps(auth_data.dump())) else: Logger.log("d", "Clearing the user profile") diff --git a/cura/OAuth2/Models.py b/cura/OAuth2/Models.py index 4c84872a09..3427f1cc3d 100644 --- a/cura/OAuth2/Models.py +++ b/cura/OAuth2/Models.py @@ -16,6 +16,7 @@ class OAuth2Settings(BaseModel): CALLBACK_PORT = None # type: Optional[int] OAUTH_SERVER_URL = None # type: Optional[str] CLIENT_ID = None # type: Optional[str] + CLIENT_SECRET = None # type: Optional[str] CLIENT_SCOPES = None # type: Optional[str] CALLBACK_URL = None # type: Optional[str] AUTH_DATA_PREFERENCE_KEY = "" # type: str