diff --git a/README.md b/README.md index 4184035e4776fb347c5c0afb8d9a0d25a6e542ea..428481eb4b0d30b949cf41d17331633ffbd087fc 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ - Deadlock Theia projet basé sur notre propre image de Theia https://git.e-biz.fr/deadlock-public/theia. Plusieurs éléments ajoutés à l'image de base : diff --git a/deadlock-plugins/deadlock-extension/README.md b/deadlock-plugins/deadlock-extension/README.md index f7d2e1b85ce1f3b10df28f5cf763b12d01190543..c24101e2f3ea48b3dbe46de58278e86a648bc763 100644 --- a/deadlock-plugins/deadlock-extension/README.md +++ b/deadlock-plugins/deadlock-extension/README.md @@ -2,14 +2,14 @@ Vscode extension to show a panel with : -- adresses availables for the current challenge pulled from `/home/config/user-challenge.json` -- challenge instruction pulled from the `README.md` +- adresses availables for the current challenge pulled from `/home/config/user-challenge.json` +- challenge instruction pulled from the `README.md` ## Quick start -- Run `setup-dev-env.sh` to mock challenge configuration -- Run `install.sh` -- Run `build.sh` -- Press `F5` (or use `Run and Debug` tab). +- Run `setup-dev-env.sh` to mock challenge configuration +- Run `install.sh` +- Run `build.sh` +- Press `F5` (or use `Run and Debug` tab). If something goes wrong, you may need to kill watch Task terminal between restarts. diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts index 6fd9cdfbe306c5ed9b906234b1efb97cf88eec43..e7a7ee088ab0c7071da97f5d07fcabce329a3475 100644 --- a/deadlock-plugins/deadlock-extension/src/core/controller.ts +++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts @@ -1,9 +1,45 @@ +import { link } from 'fs'; +import { url } from 'inspector'; import * as vscode from 'vscode'; +import { OPEN_GETTING_STARTED_COMMAND } from '../theia/command'; +import { CHOOSE_MISSION_WORKDIR_COMMAND } from './commandHandler'; +import ExtensionStore from './extensionStore'; +import KeycloakOAuth2DeviceFlowConnection from './keycloakOAuth2DeviceFlowConnection'; export default class Controller { - static launchMission(missionId: string | null) { + private connection: KeycloakOAuth2DeviceFlowConnection; + + constructor() { + this.connection = new KeycloakOAuth2DeviceFlowConnection( + 'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/auth/device', + 'https://auth.dev.deadlock.io/auth/realms/Deadlock/protocol/openid-connect/token', + ); + } + + openBrowserWithUrl(url: string) { + vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(url)); + } + + async launchMission(missionId: string | null) { if (missionId) { vscode.window.showInformationMessage(`vous lancez la mission ${missionId}`); + const extensionStore = ExtensionStore.getInstance(); + const hadMissionWorkdir = extensionStore.getMissionWorkdir() !== undefined; + if (!hadMissionWorkdir) { + await vscode.commands.executeCommand(CHOOSE_MISSION_WORKDIR_COMMAND.cmd); + } + + const isConnected = (await extensionStore.getAccessToken()) !== undefined; + console.log('accesToke: ' + extensionStore.getAccessToken()); + + //TODO: Connection + if (!isConnected) { + const { accessToken, refreshToken } = await this.connection.getToken({ openLink: this.openBrowserWithUrl }); + console.log('VOICI LES TOKENS'); + console.log(accessToken, refreshToken); + } + + vscode.commands.executeCommand(OPEN_GETTING_STARTED_COMMAND.cmd); } } } diff --git a/deadlock-plugins/deadlock-extension/src/extension.ts b/deadlock-plugins/deadlock-extension/src/extension.ts index d3a60e232bb2775d5d85cb732585bca80067dd7e..9d98f414a37916fdcd5457414cedff126a23accb 100644 --- a/deadlock-plugins/deadlock-extension/src/extension.ts +++ b/deadlock-plugins/deadlock-extension/src/extension.ts @@ -28,8 +28,7 @@ export const userConfig = new UserConfigTheia(); export async function activate(context: vscode.ExtensionContext) { vscode.window.showInformationMessage('Bienvenue sur Deadlock!'); ExtensionStore.createInstance(context); - - new KeycloakOAuth2DeviceFlowConnectionTest().run(); + const controller = new Controller(); vscode.window.registerUriHandler({ handleUri(uri: vscode.Uri) { @@ -38,7 +37,7 @@ export async function activate(context: vscode.ExtensionContext) { switch (action) { case 'open-challenge': - Controller.launchMission(queryParams.get('missionId')); + controller.launchMission(queryParams.get('missionId')); break; default: @@ -50,23 +49,16 @@ export async function activate(context: vscode.ExtensionContext) { initViews(context.extensionUri); initCommandHandlers(); - await vscode.commands.executeCommand(OPEN_BRIEFING_COMMAND.cmd); - // @ts-ignore const deadlockPanelProvider = new DepNodeProvider(vscode.workspace.rootPath); vscode.window.registerTreeDataProvider('deadlockPanel', deadlockPanelProvider); - new keycloakOAuth2DeviceFlowConnectionTest().run(); - try { await userConfig.init(); - vscode.commands.executeCommand('setContext', 'user.authenticated', false); } catch (e) { error('Cannot init userConfig'); } - await vscode.commands.executeCommand(OPEN_BRIEFING_COMMAND.cmd); - MetadataProvider.loadPathsToEnvVariables(); MetadataProvider.loadPathsToJson(`${SERVICES_PATHS_PATH}`); }