Exploring the interface of a mail adapter
Add some tests and demonstrate the adapter loading interface
This commit is contained in:
committed by
Florent Vilmart
parent
d9f1e00345
commit
8dc37b9d30
@@ -1,14 +1,15 @@
|
||||
// These methods handle the User-related routes.
|
||||
|
||||
import deepcopy from 'deepcopy';
|
||||
import deepcopy from 'deepcopy';
|
||||
|
||||
import ClassesRouter from './ClassesRouter';
|
||||
import PromiseRouter from '../PromiseRouter';
|
||||
import rest from '../rest';
|
||||
import Auth from '../Auth';
|
||||
import ClassesRouter from './ClassesRouter';
|
||||
import PromiseRouter from '../PromiseRouter';
|
||||
import rest from '../rest';
|
||||
import Auth from '../Auth';
|
||||
import passwordCrypto from '../password';
|
||||
import RestWrite from '../RestWrite';
|
||||
import { newToken } from '../cryptoUtils';
|
||||
import RestWrite from '../RestWrite';
|
||||
let cryptoUtils = require('../cryptoUtils');
|
||||
let triggers = require('../triggers');
|
||||
|
||||
export class UsersRouter extends ClassesRouter {
|
||||
handleFind(req) {
|
||||
@@ -25,7 +26,26 @@ export class UsersRouter extends ClassesRouter {
|
||||
let data = deepcopy(req.body);
|
||||
req.body = data;
|
||||
req.params.className = '_User';
|
||||
return super.handleCreate(req);
|
||||
|
||||
if (req.config.verifyUserEmails) {
|
||||
req.body._email_verify_token = cryptoUtils.randomString(25);
|
||||
req.body.emailVerified = false;
|
||||
}
|
||||
|
||||
let p = super.handleCreate(req);
|
||||
|
||||
if (req.config.verifyUserEmails) {
|
||||
// Send email as fire-and-forget once the user makes it into the DB.
|
||||
p.then(() => {
|
||||
let link = req.config.mount + "/verify_email?token=" + encodeURIComponent(req.body._email_verify_token) + "&username=" + encodeURIComponent(req.body.username);
|
||||
req.config.emailAdapter.sendVerificationEmail({
|
||||
appName: req.config.appName,
|
||||
link: link,
|
||||
user: triggers.inflate('_User', req.body),
|
||||
});
|
||||
});
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
handleUpdate(req) {
|
||||
@@ -87,7 +107,7 @@ export class UsersRouter extends ClassesRouter {
|
||||
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Invalid username/password.');
|
||||
}
|
||||
|
||||
let token = 'r:' + newToken();
|
||||
let token = 'r:' + cryptoUtils.newToken();
|
||||
user.sessionToken = token;
|
||||
delete user.password;
|
||||
|
||||
@@ -153,6 +173,7 @@ export class UsersRouter extends ClassesRouter {
|
||||
this.route('POST', '/requestPasswordReset', () => {
|
||||
throw new Parse.Error(Parse.Error.COMMAND_UNAVAILABLE, 'This path is not implemented yet.');
|
||||
});
|
||||
this.route('POST', '/requestPasswordReset', req => this.handleReset(req));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user