]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - pkgs/webapps/etherpad-lite/modules/ep_mypads/fix_ldap.patch
Add mypads to etherpad
[perso/Immae/Config/Nix.git] / pkgs / webapps / etherpad-lite / modules / ep_mypads / fix_ldap.patch
diff --git a/pkgs/webapps/etherpad-lite/modules/ep_mypads/fix_ldap.patch b/pkgs/webapps/etherpad-lite/modules/ep_mypads/fix_ldap.patch
new file mode 100644 (file)
index 0000000..738a066
--- /dev/null
@@ -0,0 +1,88 @@
+diff --git a/auth.js b/auth.js
+index ce77ee4..de66b03 100644
+--- a/auth.js
++++ b/auth.js
+@@ -91,6 +91,7 @@ var cuid        = require('cuid');
+ var common = require('./model/common.js');
+ var user   = require('./model/user.js');
+ var conf   = require('./configuration.js');
++var utils  = require('./utils.js');
+ var NOT_INTERNAL_AUTH_PWD = 'soooooo_useless';
+@@ -212,6 +213,7 @@ module.exports = (function () {
+             }
+             return callback(new Error(emsg), false);
+           }
++          console.log("before user.get");
+           user.get(login, function(err, u) {
+             var props = ldapConf.properties;
+             var mail;
+@@ -229,27 +231,30 @@ module.exports = (function () {
+               return callback(new Error(emsg), false);
+             }
+             if (err) {
++              console.log("in user.get err");
+               // We have to create the user in mypads database
+               ldapConf  = conf.get('authLdapSettings');
+               user.set({
+-                  login: ldapuser[props.login],
++                  login: utils.getSingleton(ldapuser[props.login]),
+                   password: NOT_INTERNAL_AUTH_PWD,
+-                  firstname: ldapuser[props.firstname],
+-                  lastname: ldapuser[props.lastname],
++                  firstname: utils.getSingleton(ldapuser[props.firstname]),
++                  lastname: utils.getSingleton(ldapuser[props.lastname]),
+                   email: mail,
+                   lang: ldapConf.defaultLang || 'en'
+                 }, callback);
+             } else if (u.email     !== mail                      ||
+-                       u.firstname !== ldapuser[props.firstname] ||
+-                       u.lastname  !== ldapuser[props.lastname]) {
++                       u.firstname !== utils.getSingleton(ldapuser[props.firstname]) ||
++                       u.lastname  !== utils.getSingleton(ldapuser[props.lastname])) {
+                 // Update database and cache informations if needed
+                 // (i.e. update from LDAP)
++                console.log("in user.get update");
+                 u.email     = mail;
+-                u.firstname = ldapuser[props.firstname];
+-                u.lastname  = ldapuser[props.lastname];
++                u.firstname = utils.getSingleton(ldapuser[props.firstname]);
++                u.lastname  = utils.getSingleton(ldapuser[props.lastname]);
+                 u.password  = NOT_INTERNAL_AUTH_PWD;
+                 user.set(u, callback);
+             } else {
++                console.log("in user.get callback");
+               return callback(null, u);
+             }
+           });
+diff --git a/model/common.js b/model/common.js
+index b19829b..9421742 100644
+--- a/model/common.js
++++ b/model/common.js
+@@ -94,6 +94,7 @@ module.exports = (function() {
+       var isFS = function (s) { return (ld.isString(s) && !ld.isEmpty(s)); };
+       ld.forEach(strFields, function (s) {
+         if (!isFS(params[s])) {
++          console.log(params, s);
+           throw new TypeError('BACKEND.ERROR.TYPE.PARAM_STR');
+         }
+         if (s.length > 100) {
+diff --git a/utils.js b/utils.js
+index 32c2727..d381d06 100644
+--- a/utils.js
++++ b/utils.js
+@@ -14,3 +14,13 @@ exports.callbackify2 = function (fun) {
+     return wrapPromise(fun(arg1, arg2), cb);
+   };
+ };
++
++exports.getSingleton = function (stringOrArray) {
++  if (Array.isArray(stringOrArray)) {
++    if (stringOrArray.length > 0) {
++      return stringOrArray[0];
++    }
++  } else if (stringOrArray) {
++    return stringOrArray;
++  }
++}