| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | Oidc = {};// Request OpenID Connect credentials for the user// @param options {optional}// @param credentialRequestCompleteCallback {Function} Callback function to call on//   completion. Takes one argument, credentialToken on success, or Error on//   error.Oidc.requestCredential = function (options, credentialRequestCompleteCallback) {  // support both (options, callback) and (callback).  if (!credentialRequestCompleteCallback && typeof options === 'function') {    credentialRequestCompleteCallback = options;    options = {};  }  Meteor.call("getServiceConfiguration", "oidc",(_, result) => {    if (result) {      var config = result;      var credentialToken = Random.secret();      var loginStyle = OAuth._loginStyle('oidc', config, options);      // options      options = options || {};      options.client_id = config.clientId;      options.response_type = options.response_type || 'code';      options.redirect_uri = OAuth._redirectUri('oidc', config);      options.state = OAuth._stateParam(loginStyle, credentialToken, options.redirectUrl);      options.scope = config.requestPermissions || 'openid profile email';      if (config.loginStyle && config.loginStyle == 'popup') {        options.display = 'popup';      }      var loginUrl = config.serverUrl + config.authorizationEndpoint;      // check if the loginUrl already contains a "?"      var first = loginUrl.indexOf('?') === -1;      for (var k in options) {        if (first) {          loginUrl += '?';          first = false;        }        else {          loginUrl += '&'        }        loginUrl += encodeURIComponent(k) + '=' + encodeURIComponent(options[k]);      }      //console.log('XXX: loginURL: ' + loginUrl)      options.popupOptions = options.popupOptions || {};      var popupOptions = {        width:  options.popupOptions.width || 320,        height: options.popupOptions.height || 450      };      OAuth.launchLogin({        loginService: 'oidc',        loginStyle: loginStyle,        loginUrl: loginUrl,        credentialRequestCompleteCallback: credentialRequestCompleteCallback,        credentialToken: credentialToken,        popupOptions: popupOptions,      });    }    else    {      credentialRequestCompleteCallback && credentialRequestCompleteCallback(        new ServiceConfiguration.ConfigError('Service oidc not configured.'));      return;    }  });};
 |