Sfoglia il codice sorgente

get ServiceConfiguration from server

viehlieb 2 anni fa
parent
commit
c5dd0b729d

+ 0 - 1
client/components/main/layouts.js

@@ -58,7 +58,6 @@ Template.userFormsLayout.onCreated(function () {
           options = {
             loginStyle: AccountsTemplates.options.socialLoginStyle,
           };
-          console.log('options :',JSON.stringify(options,null,2));
           Meteor.loginWithOidc(options);
         }
         else console.log("oidc redirect not set");

+ 9 - 6
models/settings.js

@@ -229,10 +229,10 @@ if (Meteor.isServer) {
     ]);
   }
 
-  function loadOidcConfig(){
-    config = ServiceConfiguration.configurations.findOne({service: 'oidc'});
-    configKeys = Object.keys(config);
-    return Object.keys(config).length > 0;
+  function loadOidcConfig(service){
+    check(service, String);
+    var config = ServiceConfiguration.configurations.findOne({service: service});
+    return config;
   }
 
   function sendInvitationEmail(_id) {
@@ -515,8 +515,11 @@ if (Meteor.isServer) {
       return process.env.PASSWORD_LOGIN_ENABLED === 'false';
     },
     isOidcRedirectionEnabled(){
-      return process.env.OIDC_REDIRECTION_ENABLED === 'true' && loadOidcConfig();
-    }
+      return process.env.OIDC_REDIRECTION_ENABLED === 'true' && Object.keys(loadOidcConfig("oidc")).length > 0;
+    },
+    getServiceConfiguration(service){
+      return loadOidcConfig(service);
+      }
   });
 }
 

+ 0 - 3
packages/wekan-accounts-oidc/oidc.js

@@ -7,10 +7,7 @@ if (Meteor.isClient) {
       callback = options;
       options = null;
     }
-    console.log(options.loginStyle);
-    console.log(callback);
     var credentialRequestCompleteCallback = Accounts.oauth.credentialRequestCompleteHandler(callback);
-    console.log("credentialCallback",credentialRequestCompleteCallback);
     Oidc.requestCredential(options, credentialRequestCompleteCallback);
   };
   }

+ 49 - 44
packages/wekan-oidc/oidc_client.js

@@ -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,
-  });
 };