All files / src/data/SingleSignOn createUserManager.js

0% Statements 0/38
0% Branches 0/10
0% Functions 0/10
0% Lines 0/28
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                                                                                                             
import { UserManager } from 'oidc-client';
import log from 'domain/log';
import Config from 'domain/Config';
 
const memoizeCache = {};
 
const memoize = (fn) => (arg) => {
  const ret = memoizeCache[arg] || fn(arg);
  memoizeCache[arg] = ret;
  return ret;
};
 
const protocol = window.location.protocol;
const hostname = window.location.hostname;
const port = window.location.port ?
    `:${window.location.port}` :
    '';
 
log.debug('SingleSignOn - userManager - ssoClientId', Config.get('ssoClientId'));
log.debug('SingleSignOn - userManager - ssoAuthorityUrl', Config.get('ssoAuthorityUrl'));
 
const userManagerConfig = {
  client_id: Config.get('ssoClientId'),
  redirect_uri: `${protocol}//${hostname}${port}/callback`,
  response_type: 'token id_token',
  scope: 'openid profile email e1SystemAPI',
  authority: Config.get('ssoAuthorityUrl'),
  silent_redirect_uri: `${protocol}//${hostname}${port}/sso-silent-renew.html`,
  automaticSilentRenew: true,
  filterProtocolClaims: true,
  clockSkew: 1800, // 30 minutes
};
 
const createCustomUserManager = memoize((config) => {
  const newUserManager = new UserManager(config);
  newUserManager.forceSignOutRedirect = () => {
    newUserManager.signOut = true;
    newUserManager.signoutRedirect();
  };
  newUserManager.signInRedirectWithValidation = () => {
    if (newUserManager.signOut === true) return;
    newUserManager.signinRedirect();
  };
  // fix casing in these inherited methods
  newUserManager.signInRedirect = () => newUserManager.signinRedirect();
  newUserManager.signOutRedirect = () => newUserManager.signoutRedirect();
  newUserManager.signInSilentCallback = () => newUserManager.signinSilentCallback();
  return newUserManager;
});
 
const createUserManager = () =>
  createCustomUserManager(userManagerConfig);
 
export default createUserManager;