@pega/auth
Advanced tools
Comparing version 0.1.1 to 0.1.2
@@ -20,3 +20,4 @@ /** | ||
export declare const sdkSetAuthHeader: (authHeader: any) => void; | ||
export declare const sdkSetCustomTokenParamsCB: (fnCustomTokenParamsCB: (() => any) | null) => void; | ||
export declare const getAvailablePortals: () => Promise<void | unknown[]>; | ||
//# sourceMappingURL=authManager.d.ts.map |
@@ -20,2 +20,3 @@ // This file wraps various calls related to logging in, logging out, etc. | ||
#authHeader = null; | ||
#customTokenParamsCB = null; | ||
// state that should be persisted across loads | ||
@@ -118,2 +119,6 @@ state = { usePopup: false, noInitialRedirect: false }; | ||
} | ||
// Setter for customTokenParamsCB | ||
set customTokenParamsCB(fn) { | ||
this.#customTokenParamsCB = fn; | ||
} | ||
// Setter/getter for usePopupForRestOfSession | ||
@@ -309,2 +314,6 @@ set usePopupForRestOfSession(usePopup) { | ||
const mashupGrantType = sdkConfigAuth.mashupGrantType || 'authCode'; | ||
// Some grant types are only available with confidential registrations and require a client secret | ||
const clientSecret = bNoInitialRedirect | ||
? sdkConfigAuth.mashupClientSecret | ||
: sdkConfigAuth.portalClientSecret; | ||
const pegaAuthConfig = { | ||
@@ -324,2 +333,5 @@ clientId: bNoInitialRedirect | ||
}; | ||
if (clientSecret) { | ||
pegaAuthConfig.clientSecret = clientSecret; | ||
} | ||
// Invoke keySuffix setter | ||
@@ -435,3 +447,9 @@ // Was using pegaAuthConfig.clientId as key but more secure to just use a random string as getting | ||
} | ||
if (tokenInfo) { | ||
if (this.#authConfig.grantType === 'customBearer' || !tokenInfo) { | ||
if (tokenInfo) { | ||
this.#authHeader = `${tokenInfo.token_type} ${tokenInfo.access_token}`; | ||
} | ||
constellationBootConfig.authorizationHeader = this.#authHeader; | ||
} | ||
else { | ||
// Pass in auth info to Constellation | ||
@@ -456,5 +474,2 @@ constellationBootConfig.authInfo = { | ||
} | ||
else { | ||
constellationBootConfig.authorizationHeader = this.#authHeader; | ||
} | ||
// Turn off dynamic load components (should be able to do it here instead of after load?) | ||
@@ -467,3 +482,3 @@ constellationBootConfig.dynamicLoadComponents = false; | ||
// Note that staticContentServerUrl already ends with a slash (see above), so no slash added. | ||
// In order to have this import succeed and to have it done with the webpackIgnore magic comment tag. | ||
// In order to have this import succeed needed to use the webpackIgnore magic comment tag. | ||
// See: https://webpack.js.org/api/module-methods/ | ||
@@ -542,3 +557,7 @@ import( | ||
} | ||
if (window.PCore) { | ||
if (this.#authConfig.grantType === 'customBearer') { | ||
// authHeader setter will also set #authHeader and invoke getAuthUtils().setAuthorizationHeader | ||
this.authHeader = `${token.token_type} ${token.access_token}`; | ||
} | ||
if (window.PCore && !this.#authHeader) { | ||
PCore.getAuthUtils().setTokens(token); | ||
@@ -550,2 +569,16 @@ } | ||
} | ||
#doCustomTokenParamsCB() { | ||
if (this.#authConfig.grantType === 'customBearer' && this.#customTokenParamsCB) { | ||
try { | ||
const customTokenParams = this.#customTokenParamsCB(); | ||
if (customTokenParams) { | ||
this.#authConfig.customTokenParams = customTokenParams; | ||
} | ||
} | ||
catch (e) { | ||
// eslint-disable-next-line no-console | ||
console.error(`Error on customTokenParams callback. ${e}`); | ||
} | ||
} | ||
} | ||
updateRedirectUri(sRedirectUri) { | ||
@@ -673,22 +706,25 @@ this.#authConfig.redirectUri = sRedirectUri; | ||
this.#initialize(!bFullReauth).then(aMgr => { | ||
const bMainRedirect = !this.noInitialRedirect; | ||
const sdkConfigAuth = SdkConfigAccess.getSdkConfigAuth(); | ||
let sRedirectUri = sdkConfigAuth.redirectUri; | ||
// If initial main redirect is OK, redirect to main page, otherwise will authorize in a popup window | ||
if (bMainRedirect && !bFullReauth) { | ||
// update redirect uri to be the root | ||
if (this.#authConfig.grantType === 'authCode') { | ||
const bMainRedirect = !this.noInitialRedirect; | ||
let sRedirectUri = sdkConfigAuth.redirectUri; | ||
// If initial main redirect is OK, redirect to main page, otherwise will authorize in a popup window | ||
if (bMainRedirect && !bFullReauth) { | ||
// update redirect uri to be the root | ||
this.updateRedirectUri(sRedirectUri); | ||
aMgr.loginRedirect(); | ||
// Don't have token til after the redirect | ||
return Promise.resolve(undefined); | ||
} | ||
// Construct path to redirect uri | ||
const nLastPathSep = sRedirectUri.lastIndexOf('/'); | ||
sRedirectUri = | ||
nLastPathSep !== -1 | ||
? `${sRedirectUri.substring(0, nLastPathSep + 1)}auth.html` | ||
: `${sRedirectUri}/auth.html`; | ||
// Set redirectUri to static auth.html | ||
this.updateRedirectUri(sRedirectUri); | ||
aMgr.loginRedirect(); | ||
// Don't have token til after the redirect | ||
return Promise.resolve(undefined); | ||
} | ||
// Construct path to redirect uri | ||
const nLastPathSep = sRedirectUri.lastIndexOf('/'); | ||
sRedirectUri = | ||
nLastPathSep !== -1 | ||
? `${sRedirectUri.substring(0, nLastPathSep + 1)}auth.html` | ||
: `${sRedirectUri}/auth.html`; | ||
// Set redirectUri to static auth.html | ||
this.updateRedirectUri(sRedirectUri); | ||
return new Promise((resolve, reject) => { | ||
this.#doCustomTokenParamsCB(); | ||
aMgr | ||
@@ -880,2 +916,9 @@ .login() | ||
}; | ||
// Set specific call back function to retrieve custom token endpoint params prior to login. This would | ||
// be set with specifying deferLoad='true' and prior to the invocation of the load method | ||
export const sdkSetCustomTokenParamsCB = (fnCustomTokenParamsCB) => { | ||
if (typeof fnCustomTokenParamsCB === 'function') { | ||
gAuthMgr.customTokenParamsCB = fnCustomTokenParamsCB; | ||
} | ||
}; | ||
export const getAvailablePortals = async () => { | ||
@@ -882,0 +925,0 @@ return gAuthMgr.getAvailablePortals(); |
{ | ||
"name": "@pega/auth", | ||
"version": "0.1.1", | ||
"version": "0.1.2", | ||
"description": "Pega OAuth 2.0 Client Library (supports Infinity and Launchpad).", | ||
@@ -5,0 +5,0 @@ "repository": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
177820
2066