diff --git a/packages/amplify-sdk/src/amplify-sdk.js b/packages/amplify-sdk/src/amplify-sdk.js index 7551c654..d8478bbb 100644 --- a/packages/amplify-sdk/src/amplify-sdk.js +++ b/packages/amplify-sdk/src/amplify-sdk.js @@ -469,7 +469,7 @@ export default class AmplifySDK { }); try { - const url = createURL(`${this.platformUrl}/#/auth/org.select`, { + const url = createURL(`${this.platformUrl}/auth/org.select`, { org_hint: org?.id, redirect }); diff --git a/packages/amplify-sdk/src/authenticators/authenticator.js b/packages/amplify-sdk/src/authenticators/authenticator.js index 0f4830b4..fc1a23cd 100644 --- a/packages/amplify-sdk/src/authenticators/authenticator.js +++ b/packages/amplify-sdk/src/authenticators/authenticator.js @@ -517,8 +517,8 @@ export default class Authenticator { let redirect = orgSelectedCallback.url; // if we just authenticated using a IdP user (e.g. not 360) - if (account.auth.idp !== '360') { - redirect = createURL(`${this.platformUrl}/#/auth/org.select`, { + if (account.auth.idp !== '360' && await this.isAccountPartOfMultipleOrgs(account)) { + redirect = createURL(`${this.platformUrl}/auth/org.select`, { redirect: orgSelectedCallback.url }); } @@ -579,6 +579,26 @@ export default class Authenticator { return new Promise(resolve => setTimeout(resolve, 3000)); } + async isAccountPartOfMultipleOrgs(account) { + // Fetch auth session to determine if the account have multiple orgs + try { + const accessToken = account.auth.tokens.access_token; + log('Fetching auth session from platform'); + const response = await this.got(`${this.platformUrl}/api/v1/auth/findSession`, { + headers: { + Accept: 'application/json', + Authorization: `Bearer ${accessToken}` + }, + responseType: 'json', + retry: 0 + }); + return response.body?.result?.orgs?.length > 1; + } catch (err) { + warn(`Failed to find session: ${err.message}`); + return false; + } + } + /* istanbul ignore next */ /** * This property is meant to be overridden by authenticator implementations. diff --git a/packages/axway-cli-auth/src/auth/login.js b/packages/axway-cli-auth/src/auth/login.js index 01403eda..54573a93 100644 --- a/packages/axway-cli-auth/src/auth/login.js +++ b/packages/axway-cli-auth/src/auth/login.js @@ -51,7 +51,7 @@ team to use for "axway" commands.`; or ${style.highlight('axway auth login --client-id --client-secret --username ')} - To set your Platform Tooling password, visit https://platform.axway.com/#/user/credentials`; + To set your Platform Tooling password, visit https://platform.axway.com/user/credentials`; } }, options: [ diff --git a/packages/axway-cli-oum/src/org/idp.js b/packages/axway-cli-oum/src/org/idp.js index 1eed6b14..51619d4a 100644 --- a/packages/axway-cli-oum/src/org/idp.js +++ b/packages/axway-cli-oum/src/org/idp.js @@ -30,7 +30,7 @@ export default { throw new Error('Managing identity provider settings requires a web browser and is unsupported in headless environments'); } - const url = `${sdk.platformUrl}#/org/${org.id}/settings/idp`; + const url = `${sdk.platformUrl}/org/${org.id}/settings/idp`; console.log(`Opening web browser to ${highlight(url)}`); await open(url); } diff --git a/packages/axway-cli-oum/src/user/credentials.js b/packages/axway-cli-oum/src/user/credentials.js index 89a2f2e5..7cc801da 100644 --- a/packages/axway-cli-oum/src/user/credentials.js +++ b/packages/axway-cli-oum/src/user/credentials.js @@ -13,7 +13,7 @@ export default { throw new Error('Changing your login credentials requires a web browser and is unsupported in headless environments'); } if (sdk !== null) { - const url = `${sdk.platformUrl}#/user/credentials`; + const url = `${sdk.platformUrl}/user/credentials`; console.log(`Opening web browser to ${highlight(url)}`); await open(url); } diff --git a/test/auth/login/help.mustache b/test/auth/login/help.mustache index f3cda10f..541e0f92 100644 --- a/test/auth/login/help.mustache +++ b/test/auth/login/help.mustache @@ -53,4 +53,4 @@ EXAMPLES: or {{#cyan}}axway auth login --client-id --client-secret --username {{/cyan}} - To set your Platform Tooling password, visit https://platform.axway.com/#/user/credentials + To set your Platform Tooling password, visit https://platform.axway.com/user/credentials diff --git a/test/helpers/platform-routes.js b/test/helpers/platform-routes.js index a63a86aa..704971ad 100644 --- a/test/helpers/platform-routes.js +++ b/test/helpers/platform-routes.js @@ -820,7 +820,7 @@ export function createPlatformRoutes(server, opts = {}) { `; }) - server.router.get([ '/', '/success' ], ctx => { + server.router.get([ '/', '/success', '/auth/org.select' ], ctx => { ctx.body = ` Test successful! @@ -830,9 +830,9 @@ export function createPlatformRoutes(server, opts = {}) {

You can close this browser window

diff --git a/test/user/credentials/open-browser.mustache b/test/user/credentials/open-browser.mustache index 1b15c058..b0088491 100644 --- a/test/user/credentials/open-browser.mustache +++ b/test/user/credentials/open-browser.mustache @@ -1,4 +1,4 @@ {{#cyan}}AXWAY CLI{{/cyan}}, version {{version}} Copyright (c) 2018-{{year}}, Axway, Inc. All Rights Reserved.{{{nodeDeprecationWarning}}} -Opening web browser to {{#cyan}}https://platform.axway.com#/user/credentials{{/cyan}} \ No newline at end of file +Opening web browser to {{#cyan}}https://platform.axway.com/user/credentials{{/cyan}} \ No newline at end of file