Skip to content

Commit

Permalink
Fix overprompting during authentication
Browse files Browse the repository at this point in the history
  • Loading branch information
gjsjohnmurray committed Nov 13, 2024
1 parent 907e24a commit f736389
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
5 changes: 3 additions & 2 deletions src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";

import * as vscode from "vscode";
import * as serverManager from "@intersystems-community/intersystems-servermanager";
import { setupHistoryExplorerController } from "./historyExplorer";
import { setupServerTestsController } from "./serverTests";
import { setupLocalTestsController } from "./localTests";
Expand All @@ -11,7 +12,7 @@ export let localTestController: vscode.TestController;
export let loadedTestController: vscode.TestController;
export let historyBrowserController: vscode.TestController;
export let osAPI: any;
export let smAPI: any;
export let smAPI: serverManager.ServerManagerAPI | undefined;

export interface TestRun extends vscode.TestRun {
debugSession?: vscode.DebugSession
Expand Down Expand Up @@ -40,7 +41,7 @@ export interface IJSONServerSpec {
description?: string;
}

async function getServerManagerAPI(): Promise<any> {
async function getServerManagerAPI(): Promise<serverManager.ServerManagerAPI | undefined> {
const targetExtension = vscode.extensions.getExtension("intersystems-community.servermanager");
if (!targetExtension) {
return undefined;
Expand Down
3 changes: 3 additions & 0 deletions src/historyExplorer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ export async function setupHistoryExplorerController() {
export async function serverSpec(item: vscode.TestItem): Promise<IServerSpec | undefined> {
const serverName = item.id.split(':')[0];
if (serverName) {
if (!smAPI) {
return undefined;
}
return await smAPI.getServerSpec(serverName);
}
else {
Expand Down
12 changes: 7 additions & 5 deletions src/makeRESTRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import axios, { AxiosResponse } from "axios";
import axiosCookieJarSupport from "axios-cookiejar-support";
import tough = require("tough-cookie");
import * as vscode from "vscode";
import { IServerSpec } from "./extension";
import { IServerSpec, smAPI } from "./extension";
import * as https from 'https';

const AUTHENTICATION_PROVIDER = "intersystems-server-credentials";
Expand Down Expand Up @@ -137,19 +137,21 @@ export async function makeRESTRequest(
}

export async function resolveCredentials(serverSpec: IServerSpec) {
// This arises if setting says to use authentication provider
if (typeof serverSpec.password === "undefined") {
if (typeof serverSpec.password === "undefined" && smAPI) {
const scopes = [serverSpec.name, serverSpec.username || ""];

// Handle Server Manager extension version < 3.8.0
const account = smAPI.getAccount ? smAPI.getAccount(serverSpec) : undefined;
let session = await vscode.authentication.getSession(
AUTHENTICATION_PROVIDER,
scopes,
{ silent: true },
{ silent: true, account },
);
if (!session) {
session = await vscode.authentication.getSession(
AUTHENTICATION_PROVIDER,
scopes,
{ createIfNone: true },
{ createIfNone: true, account },
);
}
if (session) {
Expand Down

0 comments on commit f736389

Please sign in to comment.