diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts index af61def67cad6c946d7113adedd94ed8701dd199..afee4a86fcfaf4c135a15852e25f8e4026504c38 100644 --- a/deadlock-plugins/deadlock-extension/src/core/controller.ts +++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts @@ -51,6 +51,9 @@ export default class Controller { } async authenticate() { + // WARN generate a new device code every time student clicks on log in button. Should I keep it ?\ + // The answer might be 'yes' because when the student is already authenticated, the log in button should be disabled. + await this.connection.registerDevice(); const tokens = await this.connection.getToken({ openLink: Controller.openBrowserWithUrl }); const exensionStorage = ExtensionStore.getInstance(); await exensionStorage.setAccessToken(tokens.accessToken); @@ -74,11 +77,7 @@ export default class Controller { console.log('accesToke: ' + extensionStore.getAccessToken()); if (!hadBeenConnected) { - const { accessToken, refreshToken } = await this.connection.getToken({ - openLink: Controller.openBrowserWithUrl, - }); - extensionStore.setAccessToken(accessToken); - extensionStore.setRefreshToken(refreshToken); + this.authenticate(); vscode.window.showInformationMessage('Nouvelle connexion validée'); } else { vscode.window.showInformationMessage('Déjà connecté: session récupérée'); diff --git a/deadlock-plugins/deadlock-extension/src/core/keycloakOAuth2DeviceFlowConnection.ts b/deadlock-plugins/deadlock-extension/src/core/keycloakOAuth2DeviceFlowConnection.ts index 7a34587675991c65d4d3966d816b3a525f3de00f..64dbea202102b84defdea2318dc89489c15d43c5 100644 --- a/deadlock-plugins/deadlock-extension/src/core/keycloakOAuth2DeviceFlowConnection.ts +++ b/deadlock-plugins/deadlock-extension/src/core/keycloakOAuth2DeviceFlowConnection.ts @@ -77,7 +77,7 @@ export default class KeycloakOAuth2DeviceFlowConnection { return Promise.resolve({ accessToken: this._accessToken, refreshToken: this._refreshToken }); } if (!this._deviceIsRegistered()) { - await this._registerDevice(); + await this.registerDevice(); } try { openLink(this._deviceAuthorizationRequestResponseData.verification_uri_complete!); @@ -103,7 +103,7 @@ export default class KeycloakOAuth2DeviceFlowConnection { return !!this._deviceAuthorizationRequestResponseData.device_code; } - private async _registerDevice() { + public async registerDevice() { log('Device not registered. Registering ...'); const deviceAuthorizationRequestResponse: Response = await this.createDeviceAuthorization({ url: this._deviceUrl,