Move UserController to use adaptiveCollection for findOneAndUpdate.

This commit is contained in:
Nikita Lutsenko
2016-03-02 00:04:29 -08:00
parent 244009923f
commit 6d7813be4a

View File

@@ -40,32 +40,27 @@ export class UserController extends AdaptableController {
verifyEmail(username, token) { verifyEmail(username, token) {
if (!this.shouldVerifyEmails) {
return new Promise((resolve, reject) => {
// Trying to verify email when not enabled // Trying to verify email when not enabled
if (!this.shouldVerifyEmails) { // TODO: Better error here.
reject(); return Promise.reject();
return; }
}
return this.config.database
var database = this.config.database; .adaptiveCollection('_User')
.then(collection => {
database.collection('_User').then(coll => {
// Need direct database access because verification token is not a parse field // Need direct database access because verification token is not a parse field
return coll.findAndModify({ return collection.findOneAndUpdate({
username: username, username: username,
_email_verify_token: token, _email_verify_token: token
}, null, {$set: {emailVerified: true}}, (err, doc) => { }, {$set: {emailVerified: true}});
if (err || !doc.value) { })
reject(err); .then(document => {
} else { if (!document) {
resolve(doc.value); return Promise.reject();
} }
}); return document;
}); });
});
} }
checkResetTokenValidity(username, token) { checkResetTokenValidity(username, token) {
@@ -129,24 +124,16 @@ export class UserController extends AdaptableController {
} }
setPasswordResetToken(email) { setPasswordResetToken(email) {
var database = this.config.database; let token = randomString(25);
var token = randomString(25); return this.config.database
return new Promise((resolve, reject) => { .adaptiveCollection('_User')
return database.collection('_User').then(coll => { .then(collection => {
// Need direct database access because verification token is not a parse field // Need direct database access because verification token is not a parse field
return coll.findAndModify({ return collection.findOneAndUpdate(
email: email, { email: email}, // query
}, null, {$set: {_perishable_token: token}}, (err, doc) => { { $set: { _perishable_token: token } } // update
if (err || !doc.value) { );
console.error(err);
reject(err);
} else {
doc.value._perishable_token = token;
resolve(doc.value);
}
});
}); });
});
} }
sendPasswordResetEmail(email) { sendPasswordResetEmail(email) {