ldapjs / node-ldapjs

LDAP Client and Server API for node.js
http://ldapjs.org
MIT License
1.6k stars 436 forks source link

TypeError: req.toObject is not a function #908

Open ToolmanP opened 1 year ago

ToolmanP commented 1 year ago

I was trying to run a ldap server instance referred by the example provided by the ldapjs documentation with Node.js v20.

server.add('ou=users, o=myhost', pre, (req, res, next) => {
...
const entry = req.toObject().attributes;
...
}

Then I tried to invoke this handler by invoking the LDAPAdd provided by the OpenLDAP.

However, the requests fails. I tried to hook up the server with pino logger and this time it provides me with an error message.

{
"msg":"127.0.0.1:57282::1 uncaught exception: TypeError: req.toObject is not a function at Server.<anonymous>..."
}

Is this example out of date in v3 or did I miss something here?

ToolmanP commented 1 year ago

Ok, I switch the version to v2 and it works correctly.

jsumners commented 1 year ago

Is this example out of date

Yes. The current equivalent would be entry.pojo.attributes. But it would be better to use the object itself to access the attributes, e.g. entry.attributes.

advgal commented 11 months ago

The examples/inmemory.js does not work with V3

`server.add(SUFFIX, authorize, function (req, res, next) { const dn = req.dn.toString()

if (db[dn]) { return next(new ldap.EntryAlreadyExistsError(dn)) }

db[dn] = req.toObject().attributes res.end() return next() })`

does not work. In V3 there is no AddRequest object and no toObject function anymore.

Also the code in http://ldapjs.org/server.html#add is wrong for the same reason.