From 99a674f0e21df51027216825bef6426ce2241a1c Mon Sep 17 00:00:00 2001 From: "@mazikiou" <mazikiou@takima.fr> Date: Wed, 22 Jun 2022 15:19:38 +0200 Subject: [PATCH] fix: fixed student access, feat: impoved dev environment --- .../deadlock-extension/.vscode/launch.json | 15 ++++++++++++++- .../deadlock-extension/.vscode/tasks.json | 13 +++++++++++++ .../deadlock-extension/package-lock.json | 14 +++++++------- deadlock-plugins/deadlock-extension/package.json | 2 +- .../deadlock-extension/src/core/controller.ts | 16 +++++++++++++++- .../src/core/utils/typeguards.ts | 3 +++ 6 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 deadlock-plugins/deadlock-extension/src/core/utils/typeguards.ts diff --git a/deadlock-plugins/deadlock-extension/.vscode/launch.json b/deadlock-plugins/deadlock-extension/.vscode/launch.json index fd9b7611..44ec2a1b 100644 --- a/deadlock-plugins/deadlock-extension/.vscode/launch.json +++ b/deadlock-plugins/deadlock-extension/.vscode/launch.json @@ -17,12 +17,25 @@ "name": "Run Extension in test mode", "type": "extensionHost", "request": "launch", + "args": ["--extensionDevelopmentPath=${workspaceFolder}"], + "outFiles": ["${workspaceFolder}/dist/**/*.js"], "env": { "DL_MOUNT_EXTENSION": "true" }, + "preLaunchTask": "${defaultBuildTask}" + }, + { + "name": "Rebuild then run Extension in test mode", + "type": "extensionHost", + "request": "launch", "args": ["--extensionDevelopmentPath=${workspaceFolder}"], "outFiles": ["${workspaceFolder}/dist/**/*.js"], - "preLaunchTask": "${defaultBuildTask}" + "env": { + "DL_MOUNT_EXTENSION": "true", + // TODO: SETTING: replace with your own extension path + "EXTENSION_PATH": "/home/takima/Desktop/d-projects/deadlock-desktop/deadlock-plugins/deadlock-extension/deadlock-coding-0.1.10.vsix" + }, + "preLaunchTask": "tasks: build and watch" }, { "name": "Extension Tests", diff --git a/deadlock-plugins/deadlock-extension/.vscode/tasks.json b/deadlock-plugins/deadlock-extension/.vscode/tasks.json index bb452adf..b33efaf7 100644 --- a/deadlock-plugins/deadlock-extension/.vscode/tasks.json +++ b/deadlock-plugins/deadlock-extension/.vscode/tasks.json @@ -28,10 +28,23 @@ }, "group": "build" }, + { + "label": "tasks: package-extension", + "type": "shell", + "command": "sh", + "args": ["./build.sh"], + "problemMatcher": [] + }, { "label": "tasks: watch-tests", "dependsOn": ["npm: watch", "npm: watch-tests"], "problemMatcher": [] + }, + { + "label": "tasks: build and watch", + "dependsOn": ["tasks: package-extension", "npm: watch"], + "dependsOrder": "sequence", + "problemMatcher": [] } ] } diff --git a/deadlock-plugins/deadlock-extension/package-lock.json b/deadlock-plugins/deadlock-extension/package-lock.json index f2892bfb..11f9ba5b 100644 --- a/deadlock-plugins/deadlock-extension/package-lock.json +++ b/deadlock-plugins/deadlock-extension/package-lock.json @@ -48,7 +48,7 @@ "ts-loader": "^9.2.8", "ts-node": "^10.8.0", "typescript": "^4.7.2", - "vsce": "^2.7.0", + "vsce": "^2.9.2", "webpack": "^5.70.0", "webpack-cli": "^4.9.2" }, @@ -9443,9 +9443,9 @@ } }, "node_modules/vsce": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz", - "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.9.2.tgz", + "integrity": "sha512-xyLqL4U82BilUX1t6Ym2opQEa2tLGWYjbgB7+ETeNVXlIJz5sWBJjQJSYJVFOKJSpiOtQclolu88cj7oY6vvPQ==", "dev": true, "dependencies": { "azure-devops-node-api": "^11.0.1", @@ -17416,9 +17416,9 @@ "dev": true }, "vsce": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.7.0.tgz", - "integrity": "sha512-CKU34wrQlbKDeJCRBkd1a8iwF9EvNxcYMg9hAUH6AxFGR6Wo2IKWwt3cJIcusHxx6XdjDHWlfAS/fJN30uvVnA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.9.2.tgz", + "integrity": "sha512-xyLqL4U82BilUX1t6Ym2opQEa2tLGWYjbgB7+ETeNVXlIJz5sWBJjQJSYJVFOKJSpiOtQclolu88cj7oY6vvPQ==", "dev": true, "requires": { "azure-devops-node-api": "^11.0.1", diff --git a/deadlock-plugins/deadlock-extension/package.json b/deadlock-plugins/deadlock-extension/package.json index 1f5fe4fe..badb3773 100644 --- a/deadlock-plugins/deadlock-extension/package.json +++ b/deadlock-plugins/deadlock-extension/package.json @@ -146,7 +146,7 @@ "ts-loader": "^9.2.8", "ts-node": "^10.8.0", "typescript": "^4.7.2", - "vsce": "^2.7.0", + "vsce": "^2.9.2", "webpack": "^5.70.0", "webpack-cli": "^4.9.2" }, diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts index 68c852a6..bd342ee7 100644 --- a/deadlock-plugins/deadlock-extension/src/core/controller.ts +++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts @@ -12,6 +12,7 @@ import { MissionDevContainer } from './mission/missionDevContainer'; import { extensionLog as log } from '../recorder/utils/log'; import { commands, ExtensionContext, Uri, window } from 'vscode'; import { createSshKeyFiles, isSshKeyPairExist } from './sshKeyManager'; +import { hasStatusNumber } from './utils/typeguards'; export default class Controller { public connection: KeycloakOAuth2DeviceFlowConnection; @@ -134,7 +135,20 @@ export default class Controller { const user: User = await this.apiService.getUser(userId); - const response: any = this.apiService.getAccessToRepository(user.id, mission.id); + if (!!userId && userId !== currentUser.id) { + try { + await this.apiService.getAccessToRepository(user.id, mission.id); + } catch (e) { + if (hasStatusNumber(e)) { + if (e.status === 403) { + window.showErrorMessage(`Vous n'avez pas accès à la mission: ${missionId}`); + return; + } + } else { + throw e; + } + } + } const giteaPublicProperties: GiteaPublicProperties = await this.apiService.getGiteaPublicProperties(); diff --git a/deadlock-plugins/deadlock-extension/src/core/utils/typeguards.ts b/deadlock-plugins/deadlock-extension/src/core/utils/typeguards.ts new file mode 100644 index 00000000..5f4b0b0f --- /dev/null +++ b/deadlock-plugins/deadlock-extension/src/core/utils/typeguards.ts @@ -0,0 +1,3 @@ +export function hasStatusNumber(obj: any): obj is { status: number } { + return obj.status !== undefined; +} -- GitLab