fix(User): Add isSignUp logic
emailVerfied field no longer indicates a new user.
This commit is contained in:
committed by
mrugesh mohapatra
parent
e60ff3775b
commit
bf196d37ff
@ -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) {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user