mirror of
				https://github.com/Ylianst/MeshCentral.git
				synced 2025-03-09 15:40:18 +00:00 
			
		
		
		
	ldapUserName and ldapUserRealname can now be set to for example: {{{givenName}}} {{{sn}}} (#4276)
This commit is contained in:
		
							parent
							
								
									58cd5e3bea
								
							
						
					
					
						commit
						b7bc172c40
					
				
					 2 changed files with 86 additions and 66 deletions
				
			
		
							
								
								
									
										20
									
								
								webserver.js
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								webserver.js
									
										
									
									
									
								
							|  | @ -453,7 +453,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF | |||
|                 // Work on getting the userid for this LDAP user
 | ||||
|                 var shortname = null; | ||||
|                 var username = xxuser['displayName']; | ||||
|                 if (domain.ldapusername) { username = xxuser[domain.ldapusername]; } | ||||
|                 if (typeof domain.ldapusername == 'string') { | ||||
|                     if (domain.ldapusername.indexOf('{{{') >= 0) { username = assembleStringFromObject(domain.ldapusername, xxuser); } else { username = xxuser[domain.ldapusername]; } | ||||
|                 } | ||||
|                 if (domain.ldapuserbinarykey) { | ||||
|                     // Use a binary key as the userid
 | ||||
|                     if (xxuser[domain.ldapuserbinarykey]) { shortname = Buffer.from(xxuser[domain.ldapuserbinarykey], 'binary').toString('hex').toLowerCase(); } | ||||
|  | @ -474,12 +476,14 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF | |||
|                 // Get 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 (Array.isArray(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.
 | ||||
| 
 | ||||
|                 // Get the real name for this LDAP user
 | ||||
|                 var realname = null; | ||||
|                 if (domain.ldapuserrealname) { realname = xxuser[domain.ldapuserrealname]; } | ||||
|                 if (typeof domain.ldapuserrealname == 'string') { | ||||
|                     if (domain.ldapuserrealname.indexOf('{{{') >= 0) { realname = assembleStringFromObject(domain.ldapuserrealname, xxuser); } else { realname = xxuser[domain.ldapuserrealname]; } | ||||
|                 } | ||||
|                 else { if (typeof xxuser['name'] == 'string') { realname = xxuser['name']; } } | ||||
| 
 | ||||
|                 // Get the phone number for this LDAP user
 | ||||
|  | @ -500,6 +504,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF | |||
|                 // Display user information extracted from LDAP data
 | ||||
|                 /* | ||||
|                 console.log('shortname', shortname); | ||||
|                 console.log('username', username); | ||||
|                 console.log('email', email); | ||||
|                 console.log('realname', realname); | ||||
|                 console.log('phonenumber', phonenumber); | ||||
|  | @ -8537,5 +8542,14 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF | |||
|         return require('ipcheck').match(cookieip, ip + '/24'); // 'lax' - IP address need to be in the some range
 | ||||
|     } | ||||
| 
 | ||||
|     // Takes a formating string like "this {{{a}}} is an {{{b}}} example" and fills the a and b with input o.a and o.b
 | ||||
|     function assembleStringFromObject(format, o) { | ||||
|         var r = '', i = format.indexOf('{{{'); | ||||
|         if (i > 0) { r = format.substring(0, i); format = format.substring(i); } | ||||
|         const cmd = format.split('{{{'); | ||||
|         for (var j in cmd) { if (j == 0) continue; i = cmd[j].indexOf('}}}'); r += o[cmd[j].substring(0, i)] + cmd[j].substring(i + 3); } | ||||
|         return r; | ||||
|     } | ||||
| 
 | ||||
|     return obj; | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue