mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-03-09 15:40:18 +00:00
Added ldapSaveUserToFile option to help debug LDAP issues.
This commit is contained in:
parent
7e28bdd5a9
commit
b3dd3d3613
9 changed files with 57 additions and 979 deletions
64
webserver.js
64
webserver.js
|
@ -447,6 +447,12 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
fn(new Error('invalid password'));
|
||||
return;
|
||||
} else {
|
||||
// Save this LDAP user to file if needed
|
||||
if (typeof domain.ldapsaveusertofile == 'string') {
|
||||
obj.fs.writeFile(domain.ldapsaveusertofile, JSON.stringify(xxuser, null, 2) + '\r\n\r\n', function (err) { });
|
||||
}
|
||||
|
||||
// Work on getting the userid for this LDAP user
|
||||
var username = xxuser['displayName'];
|
||||
if (domain.ldapusername) { username = xxuser[domain.ldapusername]; }
|
||||
var shortname = null;
|
||||
|
@ -466,19 +472,23 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
if (shortname == null) { fn(new Error('no user identifier')); return; }
|
||||
if (username == null) { username = shortname; }
|
||||
var userid = 'user/' + domain.id + '/' + shortname;
|
||||
var user = obj.users[userid];
|
||||
var email = null;
|
||||
if (domain.ldapuseremail) {
|
||||
email = xxuser[domain.ldapuseremail];
|
||||
} else if (xxuser.mail) { // use default
|
||||
email = xxuser.mail;
|
||||
}
|
||||
if ('[object Array]' == Object.prototype.toString.call(email)) {
|
||||
// mail may be multivalued in ldap in which case, answer is an array. Use the 1st value.
|
||||
email = email[0];
|
||||
}
|
||||
if (email) { email = email.toLowerCase(); } // it seems some code otherwhere also lowercase the emailaddress. be compatible.
|
||||
|
||||
// Work on getting the email address for this LDAP user
|
||||
var email = null;
|
||||
if (domain.ldapuseremail) { email = xxuser[domain.ldapuseremail]; } else if (xxuser.mail) { email = xxuser.mail; } // Use given feild name or default
|
||||
if ('[object Array]' == Object.prototype.toString.call(email)) { email = email[0]; } // Mail may be multivalued in LDAP in which case, answer is an array. Use the 1st value.
|
||||
if (email) { email = email.toLowerCase(); } // it seems some code elsewhere also lowercase the emailaddress, so let's be consistant.
|
||||
|
||||
// Work on getting the real name for this LDAP user
|
||||
var realname = null;
|
||||
if (domain.ldapuserrealname) { realname = xxuser[domain.ldapuserrealname]; }
|
||||
|
||||
// Work on getting the real name for this LDAP user
|
||||
var phonenumber = null;
|
||||
if (domain.ldapuserphonenumber) { phonenumber = xxuser[domain.ldapuserphonenumber]; }
|
||||
|
||||
// Check if the user already exists
|
||||
var user = obj.users[userid];
|
||||
if (user == null) {
|
||||
// Create a new user
|
||||
var user = { type: 'user', _id: userid, name: username, creation: Math.floor(Date.now() / 1000), login: Math.floor(Date.now() / 1000), access: Math.floor(Date.now() / 1000), domain: domain.id };
|
||||
|
@ -558,13 +568,14 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
ldap.authenticate(name, pass, function (err, xxuser) {
|
||||
try { ldap.close(); } catch (ex) { console.log(ex); } // Close the LDAP object
|
||||
if (err) { fn(new Error('invalid password')); return; }
|
||||
var shortname = null;
|
||||
var email = null;
|
||||
if (domain.ldapuseremail) {
|
||||
email = xxuser[domain.ldapuseremail];
|
||||
} else if (xxuser.mail) {
|
||||
email = xxuser.mail;
|
||||
|
||||
// Save this LDAP user to file if needed
|
||||
if (typeof domain.ldapsaveusertofile == 'string') {
|
||||
obj.fs.writeFile(domain.ldapsaveusertofile, JSON.stringify(xxuser, null, 2) + '\r\n\r\n', function (err) { });
|
||||
}
|
||||
|
||||
// Work on getting the userid for this LDAP user
|
||||
var shortname = null;
|
||||
if ('[object Array]' == Object.prototype.toString.call(email)) {
|
||||
// mail may be multivalued in ldap in which case, answer would be an array. Use the 1st one.
|
||||
email = email[0];
|
||||
|
@ -588,8 +599,23 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
|
|||
if (shortname == null) { fn(new Error('no user identifier')); return; }
|
||||
if (username == null) { username = shortname; }
|
||||
var userid = 'user/' + domain.id + '/' + shortname;
|
||||
var user = obj.users[userid];
|
||||
|
||||
// Work on getting the email address for this LDAP user
|
||||
var email = null;
|
||||
if (domain.ldapuseremail) { email = xxuser[domain.ldapuseremail]; } else if (xxuser.mail) { email = xxuser.mail; } // Use given feild name or default
|
||||
if ('[object Array]' == Object.prototype.toString.call(email)) { email = email[0]; } // Mail may be multivalued in LDAP in which case, answer is an array. Use the 1st value.
|
||||
if (email) { email = email.toLowerCase(); } // it seems some code elsewhere also lowercase the emailaddress, so let's be consistant.
|
||||
|
||||
// Work on getting the real name for this LDAP user
|
||||
var realname = null;
|
||||
if (domain.ldapuserrealname) { realname = xxuser[domain.ldapuserrealname]; }
|
||||
|
||||
// Work on getting the real name for this LDAP user
|
||||
var phonenumber = null;
|
||||
if (domain.ldapuserphonenumber) { phonenumber = xxuser[domain.ldapuserphonenumber]; }
|
||||
|
||||
// Check if the user already exists
|
||||
var user = obj.users[userid];
|
||||
if (user == null) {
|
||||
// This user does not exist, create a new account.
|
||||
var user = { type: 'user', _id: userid, name: username, creation: Math.floor(Date.now() / 1000), login: Math.floor(Date.now() / 1000), access: Math.floor(Date.now() / 1000), domain: domain.id };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue