Refactors verify_email, adds public html

This commit is contained in:
Florent Vilmart
2016-02-25 19:04:27 -05:00
parent 0b307bc22f
commit 7dd765256c
14 changed files with 455 additions and 63 deletions

View File

@@ -10,11 +10,13 @@ based on the parameters passed
// _adapter is private, use Symbol
var _adapter = Symbol();
import cache from '../cache';
export class AdaptableController {
constructor(adapter) {
constructor(adapter, appId) {
this.adapter = adapter;
this.appId = appId;
}
set adapter(adapter) {
@@ -26,6 +28,10 @@ export class AdaptableController {
return this[_adapter];
}
get config() {
return cache.apps[this.appId];
}
expectedAdapterType() {
throw new Error("Subclasses should implement expectedAdapterType()");
}

View File

@@ -13,7 +13,8 @@ export class MailController extends AdaptableController {
sendVerificationEmail(user, config) {
const token = encodeURIComponent(user._email_verify_token);
const username = encodeURIComponent(user.username);
let link = `${config.mount}/verify_email?token=${token}&username=${username}`;
let link = `${config.verifyEmailURL}?token=${token}&username=${username}`;
this.adapter.sendVerificationEmail({
appName: config.appName,
link: link,

View File

@@ -0,0 +1,32 @@
var DatabaseAdapter = require('../DatabaseAdapter');
export class UserController {
constructor(appId) {
this.appId = appId;
}
verifyEmail(username, token) {
var database = DatabaseAdapter.getDatabaseConnection(this.appId);
return new Promise((resolve, reject) => {
database.collection('_User').then(coll => {
// Need direct database access because verification token is not a parse field
return coll.findAndModify({
username: username,
_email_verify_token: token,
}, null, {$set: {emailVerified: true}}, (err, doc) => {
if (err || !doc.value) {
reject();
} else {
resolve();
}
});
});
});
}
}
export default UserController;