2024-07-09 20:33:37 +02:00
|
|
|
import { UserManager } from 'oidc-client-ts';
|
2021-06-23 20:41:27 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Creates a userManager from oidcSettings
|
|
|
|
|
* LINK: https://github.com/IdentityModel/oidc-client-js/wiki#configuration
|
|
|
|
|
*
|
|
|
|
|
* @param {Object} oidcSettings
|
|
|
|
|
* @param {string} oidcSettings.authServerUrl,
|
|
|
|
|
* @param {string} oidcSettings.clientId,
|
|
|
|
|
* @param {string} oidcSettings.authRedirectUri,
|
|
|
|
|
* @param {string} oidcSettings.postLogoutRedirectUri,
|
|
|
|
|
* @param {string} oidcSettings.responseType,
|
|
|
|
|
* @param {string} oidcSettings.extraQueryParams,
|
|
|
|
|
*/
|
|
|
|
|
export default function getUserManagerForOpenIdConnectClient(oidcSettings) {
|
|
|
|
|
if (!oidcSettings) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-09 20:33:37 +02:00
|
|
|
if (!oidcSettings.authority || !oidcSettings.client_id || !oidcSettings.redirect_uri) {
|
|
|
|
|
console.error('Missing required oidc settings: authority, client_id, redirect_uri');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-23 20:41:27 +02:00
|
|
|
const settings = {
|
|
|
|
|
...oidcSettings,
|
2024-07-09 20:33:37 +02:00
|
|
|
// The next client always use the code flow with PKCE
|
|
|
|
|
response_type: 'code',
|
|
|
|
|
revokeTokensOnSignout: oidcSettings.revokeAccessTokenOnSignout ?? true,
|
2021-06-23 20:41:27 +02:00
|
|
|
filterProtocolClaims: true,
|
2024-07-09 20:33:37 +02:00
|
|
|
// the followings are default values in the lib so no need to set them
|
|
|
|
|
// automaticSilentRenew: true,
|
2021-06-23 20:41:27 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const userManager = new UserManager(settings);
|
|
|
|
|
|
|
|
|
|
return userManager;
|
|
|
|
|
}
|