|  | @@ -12,56 +12,61 @@ Oidc.requestCredential = function (options, credentialRequestCompleteCallback) {
 | 
	
		
			
				|  |  |      options = {};
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  var config = ServiceConfiguration.configurations.findOne({service: 'oidc'});
 | 
	
		
			
				|  |  | -  if (!config) {
 | 
	
		
			
				|  |  | -    credentialRequestCompleteCallback && credentialRequestCompleteCallback(
 | 
	
		
			
				|  |  | -      new ServiceConfiguration.ConfigError('Service oidc not configured.'));
 | 
	
		
			
				|  |  | -    return;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +  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';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  var credentialToken = Random.secret();
 | 
	
		
			
				|  |  | -  var loginStyle = OAuth._loginStyle('oidc', config, options);
 | 
	
		
			
				|  |  | +      if (config.loginStyle && config.loginStyle == 'popup') {
 | 
	
		
			
				|  |  | +        options.display = 'popup';
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  // 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';
 | 
	
		
			
				|  |  | +      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]);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if (config.loginStyle && config.loginStyle == 'popup') {
 | 
	
		
			
				|  |  | -    options.display = 'popup';
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +      //console.log('XXX: loginURL: ' + loginUrl)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  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;
 | 
	
		
			
				|  |  | +      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 {
 | 
	
		
			
				|  |  | -      loginUrl += '&'
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      credentialRequestCompleteCallback && credentialRequestCompleteCallback(
 | 
	
		
			
				|  |  | +        new ServiceConfiguration.ConfigError('Service oidc not configured.'));
 | 
	
		
			
				|  |  | +      return;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    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,
 | 
	
		
			
				|  |  | -  });
 | 
	
		
			
				|  |  |  };
 |