fix(User): Add isSignUp logic

emailVerfied field no longer indicates a new user.
This commit is contained in:
Berkeley Martinez
2017-12-28 20:38:16 -08:00
committed by mrugesh mohapatra
parent e60ff3775b
commit bf196d37ff
2 changed files with 27 additions and 16 deletions

View File

@ -492,7 +492,7 @@ module.exports = function(User) {
User.decodeEmail = email => Buffer(email, 'base64').toString(); User.decodeEmail = email => Buffer(email, 'base64').toString();
User.prototype.requestAuthEmail = function requestAuthEmail() { User.prototype.requestAuthEmail = function requestAuthEmail(isSignUp) {
return Observable.defer(() => { return Observable.defer(() => {
const messageOrNull = getWaitMessage(this.emailAuthLinkTTL); const messageOrNull = getWaitMessage(this.emailAuthLinkTTL);
if (messageOrNull) { if (messageOrNull) {
@ -509,11 +509,12 @@ module.exports = function(User) {
return this.createAccessToken$({ ttl: 15 * 60 * 1000 }); return this.createAccessToken$({ ttl: 15 * 60 * 1000 });
}) })
.flatMap(token => { .flatMap(token => {
// email verified will be false if the user instance let renderAuthEmail = renderSignInEmail;
// has just been created let subject = 'Login Requested - freeCodeCamp';
const renderAuthEmail = this.emailVerified === false ? if (isSignUp) {
renderSignInEmail : renderAuthEmail = renderSignUpEmail;
renderSignUpEmail; subject = 'Account Created - freeCodeCamp';
}
const { id: loginToken, created: emailAuthLinkTTL } = token; const { id: loginToken, created: emailAuthLinkTTL } = token;
const loginEmail = this.getEncodedEmail(); const loginEmail = this.getEncodedEmail();
const host = getServerFullURL(); const host = getServerFullURL();
@ -521,7 +522,7 @@ module.exports = function(User) {
type: 'email', type: 'email',
to: this.email, to: this.email,
from: getEmailSender(), from: getEmailSender(),
subject: 'Login Requested - freeCodeCamp', subject,
text: renderAuthEmail({ text: renderAuthEmail({
host, host,
loginEmail, loginEmail,
@ -534,10 +535,17 @@ module.exports = function(User) {
this.update$({ emailAuthLinkTTL }) this.update$({ emailAuthLinkTTL })
); );
}) })
.map(() => dedent` .map(() => isSignUp ?
dedent`
We've created a new account for you.
If you entered a valid email, a magic link is on its way. If you entered a valid email, a magic link is on its way.
Please follow that link to sign in. Please follow that link to sign in.
`); ` :
dedent`
If you entered a valid email, a magic link is on its way.
Please follow that link to sign in.
`
);
}; };
User.prototype.requestUpdateEmail = function requestUpdateEmail(newEmail) { User.prototype.requestUpdateEmail = function requestUpdateEmail(newEmail) {

View File

@ -237,11 +237,14 @@ module.exports = function enableAuthentication(app) {
} }
return User.findOne$({ where: { email } }) return User.findOne$({ where: { email } })
.flatMap(user => ( .flatMap(_user => Observable.if(
// if no user found create new user and save to db // if no user found create new user and save to db
user ? Observable.of(user) : User.create$({ email }) _.constant(_user),
)) Observable.of(_user),
.flatMap(user => user.requestAuthEmail()) User.create$({ email })
)
.flatMap(user => user.requestAuthEmail(!_user))
)
.do(msg => res.status(200).send({ message: msg })) .do(msg => res.status(200).send({ message: msg }))
.subscribe(_.noop, next); .subscribe(_.noop, next);
} }