Skip to content
Snippets Groups Projects
Commit dfb714b3 authored by Christian ZHENG's avatar Christian ZHENG
Browse files

fix(login): repair unconsistency on logged state

parent 9de08d80
No related branches found
No related tags found
3 merge requests!16feat: publish extension on marketplace with ci,!15feat(Sprint1): add authentication + directory picking + redirection link,!14sprint 1
...@@ -51,6 +51,9 @@ export default class Controller { ...@@ -51,6 +51,9 @@ export default class Controller {
} }
async authenticate() { 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 tokens = await this.connection.getToken({ openLink: Controller.openBrowserWithUrl });
const exensionStorage = ExtensionStore.getInstance(); const exensionStorage = ExtensionStore.getInstance();
await exensionStorage.setAccessToken(tokens.accessToken); await exensionStorage.setAccessToken(tokens.accessToken);
...@@ -74,11 +77,7 @@ export default class Controller { ...@@ -74,11 +77,7 @@ export default class Controller {
console.log('accesToke: ' + extensionStore.getAccessToken()); console.log('accesToke: ' + extensionStore.getAccessToken());
if (!hadBeenConnected) { if (!hadBeenConnected) {
const { accessToken, refreshToken } = await this.connection.getToken({ this.authenticate();
openLink: Controller.openBrowserWithUrl,
});
extensionStore.setAccessToken(accessToken);
extensionStore.setRefreshToken(refreshToken);
vscode.window.showInformationMessage('Nouvelle connexion validée'); vscode.window.showInformationMessage('Nouvelle connexion validée');
} else { } else {
vscode.window.showInformationMessage('Déjà connecté: session récupérée'); vscode.window.showInformationMessage('Déjà connecté: session récupérée');
......
...@@ -77,7 +77,7 @@ export default class KeycloakOAuth2DeviceFlowConnection { ...@@ -77,7 +77,7 @@ export default class KeycloakOAuth2DeviceFlowConnection {
return Promise.resolve({ accessToken: this._accessToken, refreshToken: this._refreshToken }); return Promise.resolve({ accessToken: this._accessToken, refreshToken: this._refreshToken });
} }
if (!this._deviceIsRegistered()) { if (!this._deviceIsRegistered()) {
await this._registerDevice(); await this.registerDevice();
} }
try { try {
openLink(this._deviceAuthorizationRequestResponseData.verification_uri_complete!); openLink(this._deviceAuthorizationRequestResponseData.verification_uri_complete!);
...@@ -103,7 +103,7 @@ export default class KeycloakOAuth2DeviceFlowConnection { ...@@ -103,7 +103,7 @@ export default class KeycloakOAuth2DeviceFlowConnection {
return !!this._deviceAuthorizationRequestResponseData.device_code; return !!this._deviceAuthorizationRequestResponseData.device_code;
} }
private async _registerDevice() { public async registerDevice() {
log('Device not registered. Registering ...'); log('Device not registered. Registering ...');
const deviceAuthorizationRequestResponse: Response = await this.createDeviceAuthorization({ const deviceAuthorizationRequestResponse: Response = await this.createDeviceAuthorization({
url: this._deviceUrl, url: this._deviceUrl,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment