diff --git a/nodejs/config/inventory.sqlite b/nodejs/config/inventory.sqlite index 7cc5e8e..13788ae 100644 Binary files a/nodejs/config/inventory.sqlite and b/nodejs/config/inventory.sqlite differ diff --git a/nodejs/models/user_ldap.js b/nodejs/models/user_ldap.js index 44cdf3e..03ee17b 100644 --- a/nodejs/models/user_ldap.js +++ b/nodejs/models/user_ldap.js @@ -773,7 +773,7 @@ User.setActive = async function(active) { ]); } else { await client.modify(this.dn, [ - new Change({ operation: 'replace', modification: new Attribute({ type: 'pwdAccountLockedTime', values: ['000001010000Z'] }) }), + new Change({ operation: 'replace', modification: new Attribute({ type: 'pwdAccountLockedTime', values: ['00000101000000Z'] }) }), ]); } }); @@ -788,7 +788,7 @@ User.setActive = async function(active) { throw e; } } - this.pwdAccountLockedTime = active ? undefined : '000001010000Z'; + this.pwdAccountLockedTime = active ? undefined : '00000101000000Z'; this.isActive = active ? 'active' : ''; this.isInactive = active ? '' : 'inactive'; cache.clear(); @@ -907,6 +907,13 @@ User.login = async function(data){ } let user = await this.get(data.uid || data.username); + if (user.pwdAccountLockedTime) { + let error = new Error('Invalid Credentials, login failed.'); + error.name = 'LDAPLoginFailed'; + error.status = 401; + throw error; + } + const loginClient = makeClient(); try { await loginClient.bind(user.dn, data.password);