Skip to content

Commit f736389

Browse files
committed
Fix overprompting during authentication
1 parent 907e24a commit f736389

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

src/extension.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"use strict";
22

33
import * as vscode from "vscode";
4+
import * as serverManager from "@intersystems-community/intersystems-servermanager";
45
import { setupHistoryExplorerController } from "./historyExplorer";
56
import { setupServerTestsController } from "./serverTests";
67
import { setupLocalTestsController } from "./localTests";
@@ -11,7 +12,7 @@ export let localTestController: vscode.TestController;
1112
export let loadedTestController: vscode.TestController;
1213
export let historyBrowserController: vscode.TestController;
1314
export let osAPI: any;
14-
export let smAPI: any;
15+
export let smAPI: serverManager.ServerManagerAPI | undefined;
1516

1617
export interface TestRun extends vscode.TestRun {
1718
debugSession?: vscode.DebugSession
@@ -40,7 +41,7 @@ export interface IJSONServerSpec {
4041
description?: string;
4142
}
4243

43-
async function getServerManagerAPI(): Promise<any> {
44+
async function getServerManagerAPI(): Promise<serverManager.ServerManagerAPI | undefined> {
4445
const targetExtension = vscode.extensions.getExtension("intersystems-community.servermanager");
4546
if (!targetExtension) {
4647
return undefined;

src/historyExplorer.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ export async function setupHistoryExplorerController() {
4848
export async function serverSpec(item: vscode.TestItem): Promise<IServerSpec | undefined> {
4949
const serverName = item.id.split(':')[0];
5050
if (serverName) {
51+
if (!smAPI) {
52+
return undefined;
53+
}
5154
return await smAPI.getServerSpec(serverName);
5255
}
5356
else {

src/makeRESTRequest.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import axios, { AxiosResponse } from "axios";
22
import axiosCookieJarSupport from "axios-cookiejar-support";
33
import tough = require("tough-cookie");
44
import * as vscode from "vscode";
5-
import { IServerSpec } from "./extension";
5+
import { IServerSpec, smAPI } from "./extension";
66
import * as https from 'https';
77

88
const AUTHENTICATION_PROVIDER = "intersystems-server-credentials";
@@ -137,19 +137,21 @@ export async function makeRESTRequest(
137137
}
138138

139139
export async function resolveCredentials(serverSpec: IServerSpec) {
140-
// This arises if setting says to use authentication provider
141-
if (typeof serverSpec.password === "undefined") {
140+
if (typeof serverSpec.password === "undefined" && smAPI) {
142141
const scopes = [serverSpec.name, serverSpec.username || ""];
142+
143+
// Handle Server Manager extension version < 3.8.0
144+
const account = smAPI.getAccount ? smAPI.getAccount(serverSpec) : undefined;
143145
let session = await vscode.authentication.getSession(
144146
AUTHENTICATION_PROVIDER,
145147
scopes,
146-
{ silent: true },
148+
{ silent: true, account },
147149
);
148150
if (!session) {
149151
session = await vscode.authentication.getSession(
150152
AUTHENTICATION_PROVIDER,
151153
scopes,
152-
{ createIfNone: true },
154+
{ createIfNone: true, account },
153155
);
154156
}
155157
if (session) {

0 commit comments

Comments
 (0)