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,