Skip to content

Commit 6d7813b

Browse files
committed
Move UserController to use adaptiveCollection for findOneAndUpdate.
1 parent 2440099 commit 6d7813b

File tree

1 file changed

+25
-38
lines changed

1 file changed

+25
-38
lines changed

src/Controllers/UserController.js

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -40,32 +40,27 @@ export class UserController extends AdaptableController {
4040

4141

4242
verifyEmail(username, token) {
43-
44-
return new Promise((resolve, reject) => {
45-
43+
if (!this.shouldVerifyEmails) {
4644
// Trying to verify email when not enabled
47-
if (!this.shouldVerifyEmails) {
48-
reject();
49-
return;
50-
}
51-
52-
var database = this.config.database;
53-
54-
database.collection('_User').then(coll => {
45+
// TODO: Better error here.
46+
return Promise.reject();
47+
}
48+
49+
return this.config.database
50+
.adaptiveCollection('_User')
51+
.then(collection => {
5552
// Need direct database access because verification token is not a parse field
56-
return coll.findAndModify({
53+
return collection.findOneAndUpdate({
5754
username: username,
58-
_email_verify_token: token,
59-
}, null, {$set: {emailVerified: true}}, (err, doc) => {
60-
if (err || !doc.value) {
61-
reject(err);
62-
} else {
63-
resolve(doc.value);
64-
}
65-
});
55+
_email_verify_token: token
56+
}, {$set: {emailVerified: true}});
57+
})
58+
.then(document => {
59+
if (!document) {
60+
return Promise.reject();
61+
}
62+
return document;
6663
});
67-
68-
});
6964
}
7065

7166
checkResetTokenValidity(username, token) {
@@ -129,24 +124,16 @@ export class UserController extends AdaptableController {
129124
}
130125

131126
setPasswordResetToken(email) {
132-
var database = this.config.database;
133-
var token = randomString(25);
134-
return new Promise((resolve, reject) => {
135-
return database.collection('_User').then(coll => {
127+
let token = randomString(25);
128+
return this.config.database
129+
.adaptiveCollection('_User')
130+
.then(collection => {
136131
// Need direct database access because verification token is not a parse field
137-
return coll.findAndModify({
138-
email: email,
139-
}, null, {$set: {_perishable_token: token}}, (err, doc) => {
140-
if (err || !doc.value) {
141-
console.error(err);
142-
reject(err);
143-
} else {
144-
doc.value._perishable_token = token;
145-
resolve(doc.value);
146-
}
147-
});
132+
return collection.findOneAndUpdate(
133+
{ email: email}, // query
134+
{ $set: { _perishable_token: token } } // update
135+
);
148136
});
149-
});
150137
}
151138

152139
sendPasswordResetEmail(email) {

0 commit comments

Comments
 (0)