|
| 1 | +const config = require('../config'); |
| 2 | +const User = require('../model/user/user-schema'); |
| 3 | +const authUtils = require('./authUtils'); |
| 4 | +const frontURL = config.frontURL; |
1 | 5 |
|
2 |
| -// var _ = require('lodash'); |
3 |
| -// var Entity = require('../model/user/user-schema.js'); |
4 |
| -// var jwt = require('jwt-simple'); |
5 |
| -// var authUtils = require('./authUtils'); |
6 |
| -// exports.signup = function (req, res) { |
7 |
| -// console.log("req body " + req.body.email); |
8 |
| -// Entity.findOne({email: req.body.email}, function (err, existingUser) { |
9 |
| -// if (existingUser) { |
10 |
| -// return res.status(409).send({message: 'Email is already taken'}); |
11 |
| -// } |
12 |
| -// var user = new Entity({ |
13 |
| -// displayName: req.body.displayName, |
14 |
| -// email: req.body.email, |
15 |
| -// password: req.body.password |
16 |
| -// }); |
17 |
| -// user.save(function () { |
18 |
| -// return res.status(201).json({token: authUtils.createJWT(user)}); |
19 |
| -// }); |
20 |
| -// |
21 |
| -// }); |
22 |
| -// }; |
23 |
| -// |
24 |
| -// exports.login = function (req, res) { |
25 |
| -// console.log("req body " + req.body.email); |
26 |
| -// Entity.findOne({email: req.body.email}, '+password', function (err, user) { |
27 |
| -// if (!user) { |
28 |
| -// return res.status(401).json({message: 'Wrong email and/or password'}); |
29 |
| -// } |
30 |
| -// user.comparePassword(req.body.password, function (err, isMatch) { |
31 |
| -// if (!isMatch) { |
32 |
| -// return res.status(401).send({message: 'Wrong email and/or password'}); |
33 |
| -// } |
34 |
| -// res.send({token: authUtils.createJWT(user)}); |
35 |
| -// }); |
36 |
| -// }); |
37 |
| -// }; |
| 6 | +exports.signup = function(req, res) { |
| 7 | + const randomNumba = authUtils.generateCode(99999, 10000); |
| 8 | + const user = new User({ |
| 9 | + name: req.body.name, id: req.body.id, email: req.body.email, password: req.body.password, isPswdReset: false, resetCode: randomNumba, first_name: req.body.first_name, last_name: req.body.last_name, interests: req.body.interests, affiliation: req.body.affiliation, organisms: req.body.organisms |
| 10 | + }); |
| 11 | + User.findOne({ email: req.body.email }, (err, existingUser) => { |
| 12 | + if (existingUser) { return res.status(409).send({ message: 'This email address has already been registered.' }); } |
| 13 | + const validData = user.validateSignup(); |
| 14 | + if (validData !== '') { return res.status(409).send({ message: validData }); } |
| 15 | + user.save(() => { |
| 16 | + const mailbody = '<h1>Welcome ' + user.name + ' to Web Jam Apps.</h1><p>Click this <a style="color:blue; text-decoration:underline; cursor:pointer; cursor:hand" ' + |
| 17 | + 'href="' + frontURL + '/userutil/?email=' + user.email + '">link</a>, then enter the following code to verify your email: <br><br><strong>' + randomNumba + '</strong></p>'; |
| 18 | + authUtils.sendEmail(mailbody, user.email, 'Verify Your Email Address'); |
| 19 | + return res.status(201).json({ email: user.email }); |
| 20 | + }); |
| 21 | + }); |
| 22 | +}; |
| 23 | + |
| 24 | +exports.validemail = function(req, res) { |
| 25 | + console.log('email:' + req.body.email + ' resetCode:' + req.body.resetCode); |
| 26 | + User.findOne({ email: req.body.email, resetCode: req.body.resetCode }, (err, user) => { |
| 27 | + console.log(user); |
| 28 | + if (!user) { |
| 29 | + return res.status(401).json({ message: 'incorrect email or code' }); |
| 30 | + } |
| 31 | + user.resetCode = ''; |
| 32 | + user.isPswdReset = false; |
| 33 | + user.save((err) => { |
| 34 | + res.status(201).json({ success: true }); |
| 35 | + }); |
| 36 | + }); |
| 37 | +}; |
| 38 | + |
| 39 | +exports.login = function(req, res) { |
| 40 | + console.log('req body email' + req.body.email); |
| 41 | + let reqUserEmail = ''; |
| 42 | + reqUserEmail = authUtils.setIfExists(req.body.email); |
| 43 | + User.findOne({ email: reqUserEmail }, '+password', (err, user) => { |
| 44 | + if (!user) { |
| 45 | + return res.status(401).json({ message: 'Wrong email address' }); |
| 46 | + } if (user.password === '' || user.password === null || user.password === undefined) { |
| 47 | + return res.status(401).json({ message: 'Please reset your password' }); |
| 48 | + } |
| 49 | + authUtils.verifySaveUser(user, req, res); |
| 50 | + }); |
| 51 | +}; |
| 52 | + |
| 53 | +exports.resetpass = function(req, res) { |
| 54 | + console.log('email:' + req.body.email); |
| 55 | + // User.findOne({ $or:[{ email: req.body.email }, { id: req.body.email }] }, (err, user) => { |
| 56 | + User.findOne({ email: req.body.email }, (err, user) => { |
| 57 | + console.log(user); |
| 58 | + if (!user) { |
| 59 | + return res.status(401).json({ message: 'incorrect email address' }); |
| 60 | + } |
| 61 | + const randomNumba = authUtils.generateCode(99999, 10000); |
| 62 | + user.resetCode = randomNumba; |
| 63 | + user.isPswdReset = true; |
| 64 | + user.save((err) => { |
| 65 | + res.status(201).json({ email: user.email }); |
| 66 | + const mailBody = '<h2>A password reset was requested for ' + user.name + '.</h2><p>Click this <a style="color:blue; text-decoration:underline; cursor:pointer; cursor:hand" href="' + |
| 67 | + frontURL + '/userutil/?email=' + user.email + '&form=reset">' + |
| 68 | + 'link</a>, then enter the following code to reset your password: <br><br><strong>' + randomNumba + '</strong></p><p><i>If a reset was requested in error, you can ignore this email and login to web-jam.com as usual.</i></p>'; |
| 69 | + authUtils.sendEmail(mailBody, user.email, 'Password Reset'); |
| 70 | + }); |
| 71 | + }); |
| 72 | +}; |
| 73 | + |
| 74 | +exports.passwdreset = function(req, res) { |
| 75 | + console.log('email:' + req.body.email + ' resetCode:' + req.body.resetCode); |
| 76 | + User.findOne({ email: req.body.email, resetCode: req.body.resetCode }, (err, user) => { |
| 77 | + console.log(user); |
| 78 | + if (!user) { |
| 79 | + return res.status(401).json({ message: 'incorrect email or code' }); |
| 80 | + } |
| 81 | + user.resetCode = ''; |
| 82 | + user.isPswdReset = false; |
| 83 | + user.password = req.body.password; |
| 84 | + if (user.password.length < 8) { |
| 85 | + return res.status(401).send({ message: 'Password is not min 8 characters' }); |
| 86 | + } |
| 87 | + user.save((err) => { |
| 88 | + res.status(201).json({ success: true }); |
| 89 | + }); |
| 90 | + }); |
| 91 | +}; |
| 92 | + |
| 93 | +exports.changeemail = function(req, res) { |
| 94 | + console.log('request to change the email address'); |
| 95 | + authUtils.checkEmailSyntax(req, res); |
| 96 | + User.findOne({ email: req.body.changeemail }, (err, user) => { |
| 97 | + if (user) { |
| 98 | + return res.status(409).json({ message: 'Email address already exists' }); |
| 99 | + } |
| 100 | + User.findOne( { email: req.body.email }, (err, existinguser) => { |
| 101 | + if (!existinguser) { |
| 102 | + return res.status(409).json({ message: 'current user does not exist' }); |
| 103 | + } |
| 104 | + existinguser.resetCode = authUtils.generateCode(99999, 10000); |
| 105 | + existinguser.changeemail = req.body.changeemail; |
| 106 | + existinguser.save((err) => { |
| 107 | + console.log(existinguser); |
| 108 | + res.status(201).json({ success: true }); |
| 109 | + const mailBody = '<h2>An Email Address Change was Requested for ' + existinguser.name + '.</h2><p>Click this <a style="color:blue; text-decoration:underline; cursor:pointer; cursor:hand" href="' + |
| 110 | + frontURL + '/userutil/?changeemail=' + existinguser.changeemail + '">' + |
| 111 | + 'link</a>, then enter the following code to validate this new email: <br><br><strong>' + existinguser.resetCode + '</strong></p><p><i>If this reset was requested in error, you can ignore it and login as usual.</i></p>'; |
| 112 | + authUtils.sendEmail(mailBody, existinguser.changeemail, 'Email Change Request'); |
| 113 | + }); |
| 114 | + }); |
| 115 | + }); |
| 116 | +}; |
| 117 | + |
| 118 | +exports.updateemail = function(req, res) { |
| 119 | + console.log('validate with pin then change the email address'); |
| 120 | + authUtils.checkEmailSyntax(req, res); |
| 121 | + User.findOne({ email: req.body.email }, (err, user) => { |
| 122 | + if (!user) { |
| 123 | + return res.status(409).json({ message: 'User does not exist' }); |
| 124 | + } |
| 125 | + if (user.resetCode !== req.body.resetCode) { |
| 126 | + return res.status(409).json({ message: 'Reset code is wrong' }); |
| 127 | + } |
| 128 | + if (user.changeemail !== req.body.changeemail) { |
| 129 | + return res.status(409).json({ message: 'Reset email is not valid' }); |
| 130 | + } |
| 131 | + user.resetCode = ''; |
| 132 | + user.email = req.body.changeemail; |
| 133 | + user.changeemail = ''; |
| 134 | + user.save((err) => { |
| 135 | + res.status(201).json({ success: true }); |
| 136 | + }); |
| 137 | + }); |
| 138 | +}; |
0 commit comments