diff --git a/common/models/user.js b/common/models/user.js index f8af5ed45a..65c9af305f 100644 --- a/common/models/user.js +++ b/common/models/user.js @@ -21,41 +21,6 @@ module.exports = function(User) { User.validatesUniquenessOf('username'); debug('setting up user hooks'); - // send verification email to new camper - User.afterRemote('create', function(ctx, user, next) { - debug('user created, sending email'); - if (!user.email) { return next(); } - - var mailOptions = { - type: 'email', - to: user.email, - from: 'Team@freecodecamp.com', - subject: 'Welcome to Free Code Camp!', - redirect: '/', - text: [ - 'Greetings from San Francisco!\n\n', - 'Thank you for joining our community.\n', - 'Feel free to email us at this address if you have ', - 'any questions about Free Code Camp.\n', - 'And if you have a moment, check out our blog: ', - 'blog.freecodecamp.com.\n', - 'Good luck with the challenges!\n\n', - '- the Free Code Camp Volunteer Team' - ].join('') - }; - user.verify(mailOptions, function(err) { - if (err) { return next(err); } - debug('verification email sent'); - ctx.req.flash('success', { - msg: [ - 'Please check your email and click on the verification link ' - + 'before logging in.' - ] - }); - ctx.res.redirect('/'); - }); - }); - User.afterRemote('confirm', function(ctx) { ctx.req.flash('success', { msg: [ @@ -65,49 +30,28 @@ module.exports = function(User) { ctx.res.redirect('/email-signin'); }); - User.afterRemote('login', function(ctx, instance, next) { + User.afterRemote('login', function(ctx, user, next) { var res = ctx.res; var req = ctx.req; + // var args = ctx.args; - User.findOne({where: {email: ctx.args.credentials.email}}, - function(err, response) { - if (err) { - return next(err); - } - if (response.emailVerified !== true) { - return res.redirect('/'); - } - User.login({ - email: ctx.args.credentials.email, - password: ctx.args.credentials.password, - ttl: Infinity - }, function(err, accessToken) { - if (err) { - req.flash('errors', { - msg: [ - 'Invalid username or password.' - ] - }); - return res.redirect('/'); - } - var config = { - signed: !!req.signedCookies, - maxAge: accessToken.ttl - }; - if (accessToken && accessToken.id) { - res.cookie('access_token', accessToken.id, config); - res.cookie('userId', accessToken.userId, config); - } - req.logIn(response, function(err) { - if (err) { - return next(err); - } - req.flash('success', { msg: 'Success! You are logged in.' }); - return res.redirect('/'); - }); - }); - }); - return res.redirect('/'); + var accessToken = {}; + var config = { + signed: !!req.signedCookies, + maxAge: accessToken.ttl + }; + if (accessToken && accessToken.id) { + res.cookie('access_token', accessToken.id, config); + res.cookie('userId', accessToken.userId, config); + } + + return req.logIn(user, function(err) { + if (err) { + return next(err); + } + req.flash('success', { msg: 'Success! You are logged in.' }); + return res.redirect('/'); + }); }); User.afterRemote('logout', function(ctx, result, next) { diff --git a/server/boot/a-extendUser.js b/server/boot/a-extendUser.js index ff4b08ed2c..3b0ced4cca 100644 --- a/server/boot/a-extendUser.js +++ b/server/boot/a-extendUser.js @@ -12,6 +12,7 @@ module.exports = function(app) { var User = app.models.User; var UserIdentity = app.models.UserIdentity; var UserCredential = app.models.UserCredential; + var Email = app.models.Email; User.observe('before delete', function(ctx, next) { debug('removing user', ctx.where); var id = ctx.where && ctx.where.id ? ctx.where.id : null; @@ -41,4 +42,51 @@ module.exports = function(app) { } ); }); + + // set email varified false on user email signup + // should not be set with oauth signin methods + User.beforeRemote('create', function(ctx, user, next) { + var body = ctx.req.body; + if (body) { + body.emailVerified = false; + } + next(); + }); + + // send welcome email to new camper + User.afterRemote('create', function(ctx, user, next) { + debug('user created, sending email'); + if (!user.email) { return next(); } + + var mailOptions = { + type: 'email', + to: user.email, + from: 'Team@freecodecamp.com', + subject: 'Welcome to Free Code Camp!', + redirect: '/', + text: [ + 'Greetings from San Francisco!\n\n', + 'Thank you for joining our community.\n', + 'Feel free to email us at this address if you have ', + 'any questions about Free Code Camp.\n', + 'And if you have a moment, check out our blog: ', + 'blog.freecodecamp.com.\n', + 'Good luck with the challenges!\n\n', + '- the Free Code Camp Volunteer Team' + ].join('') + }; + + debug('sending welcome email'); + Email.send(mailOptions, function(err) { + if (err) { return next(err); } + ctx.req.logIn(user, function(err) { + if (err) { return next(err); } + + ctx.req.flash('success', { + msg: [ 'thanks for joining freecodecamp!' ] + }); + ctx.res.redirect('/'); + }); + }); + }); };