Refactor search_response.send() so that hidden variable magic works
This commit is contained in:
parent
52452f63ed
commit
ccff51804a
|
@ -677,7 +677,7 @@ Client.prototype._newConnection = function() {
|
||||||
|
|
||||||
if (self._bindDN && self._credentials) { // reconnect case
|
if (self._bindDN && self._credentials) { // reconnect case
|
||||||
self.bind(self._bindDN, self._credentials, [], function(err) {
|
self.bind(self._bindDN, self._credentials, [], function(err) {
|
||||||
if(err) {
|
if (err) {
|
||||||
log.trace('%s error rebinding: %s', c.ldap.id, err.stack);
|
log.trace('%s error rebinding: %s', c.ldap.id, err.stack);
|
||||||
return c.end();
|
return c.end();
|
||||||
}
|
}
|
||||||
|
@ -757,4 +757,4 @@ Client.prototype._newConnection = function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
};
|
||||||
|
|
|
@ -44,6 +44,8 @@ SearchResponse.prototype.send = function(entry, nofiltering) {
|
||||||
throw new TypeError('entry (SearchEntry) required');
|
throw new TypeError('entry (SearchEntry) required');
|
||||||
if (nofiltering === undefined)
|
if (nofiltering === undefined)
|
||||||
nofiltering = false;
|
nofiltering = false;
|
||||||
|
if (typeof(nofiltering) !== 'boolean')
|
||||||
|
throw new TypeError('noFiltering must be a boolean');
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
@ -56,26 +58,21 @@ SearchResponse.prototype.send = function(entry, nofiltering) {
|
||||||
if (!entry.attributes)
|
if (!entry.attributes)
|
||||||
throw new Error('entry.attributes required');
|
throw new Error('entry.attributes required');
|
||||||
|
|
||||||
|
var all = (self.attributes.indexOf('*') !== -1);
|
||||||
|
Object.keys(entry.attributes).forEach(function(a) {
|
||||||
|
var _a = a.toLowerCase();
|
||||||
|
if (!nofiltering && _a.length && _a[0] === '_') {
|
||||||
|
delete entry.attributes[a];
|
||||||
|
} else if (self.notAttributes.indexOf(_a) !== -1) {
|
||||||
|
delete entry.attributes[a];
|
||||||
|
} else if (all) {
|
||||||
|
// noop
|
||||||
|
} else if (self.attributes.length && self.attributes.indexOf(_a) === -1) {
|
||||||
|
delete entry.attributes[a];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
var save = entry;
|
var save = entry;
|
||||||
|
|
||||||
// Rip out anything that either the client didn't ask for, the server
|
|
||||||
// wants to strip, or 'private' vars that are prefixed with '_'
|
|
||||||
if (!nofiltering &&
|
|
||||||
self.attributes &&
|
|
||||||
self.attributes.length &&
|
|
||||||
self.attributes.indexOf('*') === -1) {
|
|
||||||
|
|
||||||
Object.keys(entry.attributes).forEach(function(a) {
|
|
||||||
var _a = a.toLowerCase();
|
|
||||||
if (self.attributes.indexOf(_a) === -1 ||
|
|
||||||
(self.notAttributes.length &&
|
|
||||||
self.notAttributes.indexOf(_a) !== -1) ||
|
|
||||||
(_a.length && _a.charAt(0) === '_')) {
|
|
||||||
delete entry.attributes[a];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
entry = new SearchEntry({
|
entry = new SearchEntry({
|
||||||
objectName: typeof(save.dn) === 'string' ? parseDN(save.dn) : save.dn,
|
objectName: typeof(save.dn) === 'string' ? parseDN(save.dn) : save.dn,
|
||||||
messageID: self.messageID,
|
messageID: self.messageID,
|
||||||
|
@ -94,10 +91,10 @@ SearchResponse.prototype.send = function(entry, nofiltering) {
|
||||||
this.log.warn('%s failure to write message %j: %s',
|
this.log.warn('%s failure to write message %j: %s',
|
||||||
this.connection.ldap.id, this.json, e.toString());
|
this.connection.ldap.id, this.json, e.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SearchResponse.prototype.createSearchEntry = function(object) {
|
SearchResponse.prototype.createSearchEntry = function(object) {
|
||||||
if (!object || typeof(object) !== 'object')
|
if (!object || typeof(object) !== 'object')
|
||||||
throw new TypeError('object required');
|
throw new TypeError('object required');
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"name": "ldapjs",
|
"name": "ldapjs",
|
||||||
"homepage": "http://ldapjs.org",
|
"homepage": "http://ldapjs.org",
|
||||||
"description": "LDAP client and server APIs",
|
"description": "LDAP client and server APIs",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/mcavage/node-ldapjs.git"
|
"url": "git://github.com/mcavage/node-ldapjs.git"
|
||||||
|
|
|
@ -110,7 +110,7 @@ test('setup', function(t) {
|
||||||
dn: 'dc=empty',
|
dn: 'dc=empty',
|
||||||
attributes: {
|
attributes: {
|
||||||
member: [],
|
member: [],
|
||||||
'member;range=0-1': ['cn=user1, dc=empty','cn=user2, dc=empty']
|
'member;range=0-1': ['cn=user1, dc=empty', 'cn=user2, dc=empty']
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
res.end();
|
res.end();
|
||||||
|
|
Loading…
Reference in New Issue