X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=pkgs%2Fwebapps%2Fetherpad-lite%2Fmodules%2Fep_mypads%2Ffix_ldap.patch;fp=pkgs%2Fwebapps%2Fetherpad-lite%2Fmodules%2Fep_mypads%2Ffix_ldap.patch;h=738a0668b52f7e3bfc8678867e88d68ef8e769ef;hb=f0d942ac060bf350dfd0b6babbada69f0671d6bf;hp=0000000000000000000000000000000000000000;hpb=840812f2980b77ea93e74666f80a7e0fe5b633eb;p=perso%2FImmae%2FConfig%2FNix.git 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 index 0000000..738a066 --- /dev/null +++ b/pkgs/webapps/etherpad-lite/modules/ep_mypads/fix_ldap.patch @@ -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; ++ } ++}