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