mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 12:05:57 +01:00
closes #6242
This commit is contained in:
@@ -119,7 +119,7 @@ UserReset.commit = function (code, password, callback) {
|
|||||||
user.hashPassword(password, next);
|
user.hashPassword(password, next);
|
||||||
},
|
},
|
||||||
function (hash, next) {
|
function (hash, next) {
|
||||||
async.parallel([
|
async.series([
|
||||||
async.apply(user.setUserFields, uid, { password: hash, 'email:confirmed': 1 }),
|
async.apply(user.setUserFields, uid, { password: hash, 'email:confirmed': 1 }),
|
||||||
async.apply(db.deleteObjectField, 'reset:uid', code),
|
async.apply(db.deleteObjectField, 'reset:uid', code),
|
||||||
async.apply(db.sortedSetRemove, 'reset:issueDate', code),
|
async.apply(db.sortedSetRemove, 'reset:issueDate', code),
|
||||||
@@ -128,7 +128,10 @@ UserReset.commit = function (code, password, callback) {
|
|||||||
async.apply(user.auth.resetLockout, uid),
|
async.apply(user.auth.resetLockout, uid),
|
||||||
async.apply(db.delete, 'uid:' + uid + ':confirm:email:sent'),
|
async.apply(db.delete, 'uid:' + uid + ':confirm:email:sent'),
|
||||||
async.apply(db.sortedSetRemove, 'users:notvalidated', uid),
|
async.apply(db.sortedSetRemove, 'users:notvalidated', uid),
|
||||||
], next);
|
async.apply(UserReset.cleanByUid, uid),
|
||||||
|
], function (err) {
|
||||||
|
next(err);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
], callback);
|
], callback);
|
||||||
};
|
};
|
||||||
|
|||||||
34
test/user.js
34
test/user.js
@@ -471,6 +471,40 @@ describe('User', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('.commit() should invalidate old codes', function (done) {
|
||||||
|
var code1;
|
||||||
|
var code2;
|
||||||
|
var uid;
|
||||||
|
async.waterfall([
|
||||||
|
function (next) {
|
||||||
|
User.create({ username: 'doublereseter', email: 'sorry@forgot.com', password: '123456' }, next);
|
||||||
|
},
|
||||||
|
function (_uid, next) {
|
||||||
|
uid = _uid;
|
||||||
|
User.reset.generate(uid, next);
|
||||||
|
},
|
||||||
|
function (code, next) {
|
||||||
|
code1 = code;
|
||||||
|
User.reset.generate(uid, next);
|
||||||
|
},
|
||||||
|
function (code, next) {
|
||||||
|
code2 = code;
|
||||||
|
User.reset.validate(code1, next);
|
||||||
|
},
|
||||||
|
function (isValid, next) {
|
||||||
|
assert(isValid);
|
||||||
|
User.reset.commit(code2, 'newPwd123', next);
|
||||||
|
},
|
||||||
|
function (next) {
|
||||||
|
User.reset.validate(code1, next);
|
||||||
|
},
|
||||||
|
function (isValid, next) {
|
||||||
|
assert(!isValid);
|
||||||
|
next();
|
||||||
|
},
|
||||||
|
], done);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('hash methods', function () {
|
describe('hash methods', function () {
|
||||||
|
|||||||
Reference in New Issue
Block a user