Skip to content

Commit 797655f

Browse files
committed
Prompt for password if the stored one didn't work
1 parent 92604b3 commit 797655f

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

src/authenticationProvider.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ export class ServerManagerAuthenticationProvider implements AuthenticationProvid
6666
}
6767

6868
if (sessions.length === 1) {
69-
sessions = sessions.filter(async (session) => await this._isStillValid(session));
69+
if (!(await this._isStillValid(sessions[0]))) {
70+
sessions = [];
71+
}
7072
}
7173
return sessions || [];
7274
}
@@ -214,8 +216,8 @@ export class ServerManagerAuthenticationProvider implements AuthenticationProvid
214216
serverSpec.username = session.userName;
215217
serverSpec.password = session.accessToken;
216218
const response = await makeRESTRequest("HEAD", serverSpec);
217-
if (response?.status !== 200) {
218-
this._removeSession(session.id, true);
219+
if (response?.status === 401) {
220+
await this._removeSession(session.id, true);
219221
return false;
220222
}
221223
}

src/makeRESTRequest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ export async function makeRESTRequest(
165165
return respdata;
166166
} catch (error) {
167167
console.log(error);
168-
return undefined;
168+
return error.response;
169169
}
170170
}
171171

src/ui/serverManagerView.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,13 @@ async function serverFeatures(element: ServerTreeItem, params?: any): Promise<Fe
383383
return undefined;
384384
}
385385

386-
const response = await makeRESTRequest("HEAD", serverSpec);
387-
if (!response || response.status !== 200) {
386+
let response = await makeRESTRequest("HEAD", serverSpec);
387+
if (response?.status === 401) {
388+
// Authentication error, so retry in case first attempt cleared a no-longer-valid stored password
389+
serverSpec.password = undefined;
390+
response = await makeRESTRequest("HEAD", serverSpec);
391+
}
392+
if (response?.status !== 200) {
388393
children.push(new OfflineTreeItem({ parent: element, label: name, id: name }, serverSpec.username || 'UnknownUser'));
389394
} else {
390395
children.push(new NamespacesTreeItem({ parent: element, label: name, id: name }, element.name, serverSpec.username || 'UnknownUser'));
@@ -458,11 +463,11 @@ async function serverNamespaces(element: ServerTreeItem, params?: any): Promise<
458463
}
459464

460465
const response = await makeRESTRequest("GET", serverSpec);
461-
if (!response || response.status !== 200) {
466+
if (response?.status !== 200) {
462467
children.push(new OfflineTreeItem({ parent: element, label: name, id: name }, serverSpec.username || 'UnknownUser'));
463468
} else {
464469
const serverApiVersion = response.data.result.content.api;
465-
response.data.result.content.namespaces.map((namespace) => {
470+
response.data.result.content.namespaces.map((namespace: string) => {
466471
children.push(new NamespaceTreeItem({ parent: element, label: name, id: name }, namespace, name, serverApiVersion));
467472
});
468473
}
@@ -555,7 +560,7 @@ async function namespaceProjects(element: ProjectsTreeItem, params?: any): Promi
555560
{ apiVersion: 1, namespace: params.ns, path: "/action/query" },
556561
{ query: "SELECT Name, Description FROM %Studio.Project", parameters: [] }
557562
);
558-
if (response !== undefined) {
563+
if (response?.status === 200) {
559564
if (response.data.result.content === undefined) {
560565
let message;
561566
if (response.data.status?.errors[0]?.code === 5540) {
@@ -641,7 +646,7 @@ async function namespaceWebApps(element: ProjectsTreeItem, params?: any): Promis
641646
serverSpec,
642647
{ apiVersion: 1, namespace: "%SYS", path: `/cspapps/${params.ns}` }
643648
);
644-
if (response !== undefined) {
649+
if (response?.status === 200) {
645650
if (response.data.result.content === undefined) {
646651
vscode.window.showErrorMessage(response.data.status.summary);
647652
return undefined;

0 commit comments

Comments
 (0)