diff --git a/models/ldap/user.js b/models/ldap/user.js index b6d7608..46eaf60 100644 --- a/models/ldap/user.js +++ b/models/ldap/user.js @@ -11,10 +11,6 @@ var userLUR = new LRUCache({ maxAge: 60000, }); -const client = new Client({ - url: conf.url, -}); - const user_parse = function(data){ if(data[conf.userNameAttribute]){ data.username = data[conf.userNameAttribute]; @@ -31,6 +27,10 @@ User.backing = "LDAP"; User.list = async function(){ try{ + const client = new Client({ + url: conf.url, + }); + await client.bind(conf.bindDN, conf.bindPassword); const res = await client.search(conf.userBase, { @@ -49,6 +49,10 @@ User.list = async function(){ User.listDetail = async function(){ try{ + const client = new Client({ + url: conf.url, + }); + await client.bind(conf.bindDN, conf.bindPassword); const res = await client.search(conf.userBase, { @@ -86,7 +90,11 @@ User.get = async function(data, key){ data.searchValue = data.searchValue || data.uid; let filter = `(&${conf.userFilter}(${data.searchKey}=${data.searchValue}))`; - if(userLUR.get(filter)) return userLUR.get(filter) + if(userLUR.get(filter)) return userLUR.get(filter); + + const client = new Client({ + url: conf.url, + }); await client.bind(conf.bindDN, conf.bindPassword); const res = await client.search(conf.userBase, { @@ -131,6 +139,10 @@ User.login = async function(data){ let user = await this.get(data.uid || data[conf.userNameAttribute] || data.username); + const client = new Client({ + url: conf.url, + }); + await client.bind(user.dn, data.password); await client.unbind();