From 6d7813be4a1e06e319af07aa4926bd71fdb8697c Mon Sep 17 00:00:00 2001 From: Nikita Lutsenko Date: Wed, 2 Mar 2016 00:04:29 -0800 Subject: [PATCH] Move UserController to use adaptiveCollection for findOneAndUpdate. --- src/Controllers/UserController.js | 63 ++++++++++++------------------- 1 file changed, 25 insertions(+), 38 deletions(-) diff --git a/src/Controllers/UserController.js b/src/Controllers/UserController.js index 290f2d25..019f71c1 100644 --- a/src/Controllers/UserController.js +++ b/src/Controllers/UserController.js @@ -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) {