Skip to content

Commit 7c72476

Browse files
Merge pull request #301 from WebJamApps/dev
Quena release
2 parents e9a16f6 + 3c4c88b commit 7c72476

23 files changed

+1913
-493
lines changed

.circleci/config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ jobs:
44
working_directory: ~/web-jam-back
55
# The primary container is an instance of the first list image listed. Your build commands run in this container.
66
docker:
7-
- image: circleci/node:10.8.0-browsers
7+
- image: circleci/node:10.9.0-browsers
88
# The secondary container is an instance of the second listed image which is run in a common network where ports exposed on the primary container are available on localhost.
99
#- image: mongo:3.4.4
1010
steps:
@@ -23,7 +23,7 @@ jobs:
2323
- node_modules
2424
test:
2525
docker:
26-
- image: circleci/node:10.8.0-browsers
26+
- image: circleci/node:10.9.0-browsers
2727
#- image: mongo:3.4.4
2828
steps:
2929
- checkout

.eslintrc.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
"comma-dangle": [0, "never"],
1111
"no-undef": [0, "never"],
1212
"no-underscore-dangle": [0, "never"],
13-
"func-names": [0, "never"],
1413
"no-restricted-syntax": [0, "never"],
1514
"no-unused-expressions": [2, {
1615
"allowShortCircuit": true
@@ -32,7 +31,6 @@
3231
"no-trailing-spaces": [1, {
3332
"skipBlankLines": true
3433
}],
35-
"node/no-unpublished-require": 0,
3634
"security/detect-unsafe-regex": 0,
3735
"security/detect-object-injection": 0,
3836
"prefer-destructuring": 0,

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
10.8.0
1+
10.9.0

.nycrc.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"report-dir": "./coverage/mocha",
3+
"reporter": ["lcov", "json"],
4+
"exclude": ["**/*.spec.js", "test"]
5+
}

auth/auth.controller.js

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ let frontURL = config.frontURL;
66
/* istanbul ignore if */
77
if (process.env.NODE_ENV === 'production') frontURL = 'https://web-jam.com';
88

9-
exports.signup = function (req, res) {
9+
exports.signup = function signup(req, res) {
1010
const randomNumba = authUtils.generateCode(99999, 10000);
1111
const user = new User({
1212
name: req.body.name,
@@ -42,23 +42,23 @@ exports.signup = function (req, res) {
4242
});
4343
};
4444

45-
exports.validemail = function (req, res) {
46-
console.log('email:' + req.body.email + ' resetCode:' + req.body.resetCode);
47-
User.findOne({ email: req.body.email, resetCode: req.body.resetCode }, (err, user) => {
48-
console.log(user);
49-
if (!user) {
50-
return res.status(401).json({ message: 'incorrect email or code' });
51-
}
52-
user.resetCode = '';
53-
user.isPswdReset = false;
54-
user.verifiedEmail = true;
55-
return user.save((err) => {
56-
res.status(201).json({ success: true });
57-
});
58-
});
59-
};
45+
// exports.validemail = function validemail(req, res) {
46+
// // console.log('email:' + req.body.email + ' resetCode:' + req.body.resetCode);
47+
// return User.findOne({ email: req.body.email, resetCode: req.body.resetCode }, (err, user) => {
48+
// console.log(user);
49+
// if (!user) {
50+
// return res.status(401).json({ message: 'incorrect email or code' });
51+
// }
52+
// user.resetCode = '';
53+
// user.isPswdReset = false;
54+
// user.verifiedEmail = true;
55+
// return user.save((err) => {
56+
// res.status(201).json({ success: true });
57+
// });
58+
// });
59+
// };
6060

61-
exports.login = function (req, res) {
61+
exports.login = function login(req, res) {
6262
console.log('req body email' + req.body.email);
6363
let reqUserEmail = '';
6464
reqUserEmail = authUtils.setIfExists(req.body.email);
@@ -77,32 +77,32 @@ exports.login = function (req, res) {
7777
});
7878
};
7979

80-
exports.resetpass = function (req, res) {
81-
console.log('email:' + req.body.email);
82-
User.findOne({ email: req.body.email }, (err, user) => {
83-
console.log(user);
84-
if (!user) {
85-
return res.status(401).json({ message: 'incorrect email address' });
86-
}
87-
if (!user.verifiedEmail) {
88-
return res.status(401).json({ message: 'Verify your email address' });
89-
}
90-
const randomNumba = authUtils.generateCode(99999, 10000);
91-
user.resetCode = randomNumba;
92-
user.isPswdReset = true;
93-
return user.save((err) => {
94-
res.status(201).json({ email: user.email });
95-
const mailBody = '<h2>A password reset was requested for ' + user.name
96-
+ '.</h2><p>Click this <a style="color:blue; text-decoration:underline; cursor:pointer; cursor:hand" href="'
97-
+ frontURL + '/userutil/?email=' + user.email + '&form=reset">'
98-
+ 'link</a>, then enter the following code to reset your password: <br><br><strong>'
99-
+ 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>';
100-
authUtils.sendGridEmail(mailBody, user.email, 'Password Reset');
101-
});
102-
});
103-
};
80+
// exports.resetpass = function resetpass(req, res) {
81+
// console.log('email:' + req.body.email);
82+
// User.findOne({ email: req.body.email }, (err, user) => {
83+
// console.log(user);
84+
// if (!user) {
85+
// return res.status(401).json({ message: 'incorrect email address' });
86+
// }
87+
// if (!user.verifiedEmail) {
88+
// return res.status(401).json({ message: 'Verify your email address' });
89+
// }
90+
// const randomNumba = authUtils.generateCode(99999, 10000);
91+
// user.resetCode = randomNumba;
92+
// user.isPswdReset = true;
93+
// return user.save((err) => {
94+
// res.status(201).json({ email: user.email });
95+
// const mailBody = '<h2>A password reset was requested for ' + user.name
96+
// + '.</h2><p>Click this <a style="color:blue; text-decoration:underline; cursor:pointer; cursor:hand" href="'
97+
// + frontURL + '/userutil/?email=' + user.email + '&form=reset">'
98+
// + 'link</a>, then enter the following code to reset your password: <br><br><strong>'
99+
// + 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>';
100+
// authUtils.sendGridEmail(mailBody, user.email, 'Password Reset');
101+
// });
102+
// });
103+
// };
104104

105-
exports.passwdreset = function (req, res) {
105+
exports.passwdreset = function passwdreset(req, res) {
106106
console.log('email:' + req.body.email + ' resetCode:' + req.body.resetCode);
107107
User.findOne({ email: req.body.email, resetCode: req.body.resetCode }, (err, user) => {
108108
console.log(user);
@@ -121,7 +121,7 @@ exports.passwdreset = function (req, res) {
121121
});
122122
};
123123

124-
exports.changeemail = function (req, res) {
124+
exports.changeemail = function changeemail(req, res) {
125125
console.log('request to change the email address');
126126
authUtils.checkEmailSyntax(req, res);
127127
User.findOne({ email: req.body.changeemail }, (err, user) => {
@@ -148,7 +148,7 @@ exports.changeemail = function (req, res) {
148148
});
149149
};
150150

151-
exports.updateemail = function (req, res) {
151+
exports.updateemail = function updateemail(req, res) {
152152
console.log('validate with pin then change the email address');
153153
authUtils.checkEmailSyntax(req, res);
154154
User.findOne({ email: req.body.email }, (err, user) => {

auth/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const express = require('express');
2+
const userController = require('../model/user/user-controller');
23
// const authUtils = require('./authUtils');
34
const authController = require('./auth.controller.js');
45
// var meController = require('./me.controller.js');
@@ -13,10 +14,10 @@ const google = require('./google.js');
1314
// var foursquare = require('./foursquare');
1415
const router = express.Router();
1516
router.post('/signup', authController.signup);
16-
router.put('/validemail', authController.validemail);
17+
router.put('/validate-email', userController.validateEmail);
1718
router.post('/google', google.authenticate);
1819
router.post('/login', authController.login);
19-
router.put('/resetpass', authController.resetpass);
20+
router.put('/resetpass', userController.resetpass);
2021
router.put('/passwdreset', authController.passwdreset);
2122
router.put('/changeemail', authController.changeemail); // request is made and verification pin is sent to new email,
2223
// new email is stored in user.changeemail field

jest.config.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"verbose": true,
3+
"bail": true,
4+
"testPathIgnorePatterns": ["/node_modules/", "/test/mocha", "/frontend"],
5+
"coverageDirectory": "coverage/jest",
6+
"collectCoverage": true,
7+
"testEnvironment": "node",
8+
"testURL": "http://localhost/"
9+
}

lib/controller.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
const mongoose = require('mongoose');
2+
const AuthUtils = require('../auth/authUtils');
23

34
class Controller {
45
constructor(model) {
56
this.model = model;
7+
this.authUtils = new AuthUtils();
68
}
79

810
find(req, res, next) {

lib/facade.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@ class Facade {
3232
// .exec();
3333
// }
3434

35-
// findOne(query) {
36-
// return this.Schema
37-
// .findOne(query)
38-
// .exec();
39-
// }
35+
findOne(query) {
36+
return this.Schema.findOne(query).exec();
37+
}
38+
39+
findOneAndUpdate(conditions, update) {
40+
return this.Schema.findOneAndUpdate(conditions, update, { new:true }).exec();
41+
}
4042

4143
findById(id) {
4244
return this.Schema

model/user/user-controller.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,42 @@ class UserController extends Controller {
88
.then(collection => res.status(200).json(collection))
99
.catch(err => res.status(500).json({ message: 'failed to find user by email', error: err }));
1010
}
11+
12+
async validateEmail(req, res) {
13+
let updatedUser;
14+
// try {
15+
// myUser = await this.model.findOne({ email: req.body.email, resetCode: req.body.resetCode });
16+
// } catch (e) { return res.status(500).json({ message:e.message }); }
17+
// if (myUser === null || myUser === undefined) return res.status(401).json({ message: 'incorrect email or code' });
18+
const update = { resetCode: '', isPswdReset:false, verifiedEmail:true };
19+
try {
20+
updatedUser = await this.model.findOneAndUpdate({ email: req.body.email, resetCode: req.body.resetCode }, update);
21+
} catch (e) { return res.status(500).json({ message:e.message }); }
22+
if (updatedUser === null || updatedUser === undefined) return res.status(401).json({ message: 'incorrect email or code' });
23+
return res.status(200).json(updatedUser);
24+
}
25+
26+
resetpass(req, res) {
27+
// console.log('email:' + req.body.email);
28+
this.model.findOne({ email: req.body.email }, (err, user) => {
29+
if (err) return res.status(500).json(e.message);
30+
// console.log(user);
31+
if (!user) return res.status(401).json({ message: 'incorrect email address' });
32+
if (!user.verifiedEmail) return res.status(401).json({ message: 'Verify your email address' });
33+
const randomNumba = authUtils.generateCode(99999, 10000);
34+
user.resetCode = randomNumba;
35+
user.isPswdReset = true;
36+
return user.save((err) => {
37+
res.status(200).json({ email: user.email });
38+
const mailBody = '<h2>A password reset was requested for ' + user.name
39+
+ '.</h2><p>Click this <a style="color:blue; text-decoration:underline; cursor:pointer; cursor:hand" href="'
40+
+ frontURL + '/userutil/?email=' + user.email + '&form=reset">'
41+
+ 'link</a>, then enter the following code to reset your password: <br><br><strong>'
42+
+ 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>';
43+
this.authUtils.sendGridEmail(mailBody, user.email, 'Password Reset');
44+
});
45+
});
46+
}
1147
}
1248

1349
module.exports = new UserController(userModel);

0 commit comments

Comments
 (0)