From 81a3dbc84716a386e8206838d4867ea872a4f1fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salom=C3=A9=20Voltz?= Date: Tue, 24 Sep 2024 17:38:04 +0200 Subject: [PATCH] feat(auth-logout): Add logout command --- package.json | 4 ++++ src/extension.ts | 11 +++++++++++ src/lib/ggshield-api.ts | 6 ++++++ src/lib/ggshield-configuration.ts | 6 +----- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 07f8969..c808f92 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,10 @@ "command": "gitguardian.authenticate", "title": "gitguardian: Authenticate" }, + { + "command": "gitguardian.logout", + "title": "gitguardian: logout" + }, { "command": "gitguardian.showOutput", "title": "Show Output" diff --git a/src/extension.ts b/src/extension.ts index dcdb571..e248881 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -5,6 +5,7 @@ import { ignoreLastFound, ignoreSecret, loginGGShield, + logoutGGShield, showAPIQuota, } from "./lib/ggshield-api"; import { @@ -255,6 +256,16 @@ export function activate(context: ExtensionContext) { } else { updateStatusBarItem(StatusBarStatus.unauthenticated, statusBar); } + }), + commands.registerCommand("gitguardian.logout", async () => { + outputChannel.show(); + logoutGGShield(ggshieldResolver.configuration); + updateStatusBarItem(StatusBarStatus.unauthenticated, statusBar); + commands.executeCommand('setContext', 'isAuthenticated', false); + setApiKey(configuration, undefined); + ggshieldViewProvider.refresh(); + ggshieldRemediationMessageViewProvider.refresh(); + ggshieldQuotaViewProvider.refresh(); }) ); }) diff --git a/src/lib/ggshield-api.ts b/src/lib/ggshield-api.ts index 66cc849..fdf1a01 100644 --- a/src/lib/ggshield-api.ts +++ b/src/lib/ggshield-api.ts @@ -251,6 +251,12 @@ export async function loginGGShield( }); } +export function logoutGGShield( + configuration: GGShieldConfiguration +): void { + const proc = runGGShieldCommand(configuration, ["auth", "logout"]); +} + export function ggshieldAuthStatus( configuration: GGShieldConfiguration ): boolean { diff --git a/src/lib/ggshield-configuration.ts b/src/lib/ggshield-configuration.ts index bfd8022..91dc96e 100644 --- a/src/lib/ggshield-configuration.ts +++ b/src/lib/ggshield-configuration.ts @@ -40,10 +40,6 @@ export function getConfiguration( export function setApiKey(configuration: GGShieldConfiguration, apiKey: string | undefined): void { const config = workspace.getConfiguration("gitguardian"); - if (!apiKey) { - throw new Error("Missing API Key"); - } - - configuration.apiKey = apiKey; + configuration.apiKey = apiKey ? apiKey : ""; config.update("apiKey", apiKey, ConfigurationTarget.Global); } \ No newline at end of file