Skip to content

[update-manifests] update and add device manifests #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 13, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 11 additions & 14 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,23 @@ var cors = require("cors");
// DB connection
var MONGODB_URL = process.env.MONGODB_URL;
var mongoose = require("mongoose");
mongoose.connect(MONGODB_URL, { useNewUrlParser: true, useUnifiedTopology: true }).then(() => {
//don't show the log when it is test
if(process.env.NODE_ENV !== "test") {
console.log("Connected to %s", MONGODB_URL);
console.log("App is running ... \n");
console.log("Press CTRL + C to stop the process. \n");
}
})
.catch(err => {
console.error("App starting error:", err.message);
process.exit(1);
});
var db = mongoose.connection;

var app = express();
mongoose.connect(MONGODB_URL, {useNewUrlParser: true, useUnifiedTopology: true }).then(() =>{
console.log("Connection to mongodb has been successful.");
}).catch((err) => {
console.log("Unable to connect with mongodb");
console.error(err);
process.exit(1);
});

var db = mongoose.connection;
var app = express();
//don't show the log when it is test
if(process.env.NODE_ENV !== "test") {
app.use(logger("dev"));
}


app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
Expand Down
186 changes: 27 additions & 159 deletions controllers/AuthController.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ const apiResponse = require("../helpers/apiResponse");
const utility = require("../helpers/utility");
const bcrypt = require("bcrypt");
const jwt = require("jsonwebtoken");
const mailer = require("../helpers/mailer");
const { constants } = require("../helpers/constants");

/**
Expand All @@ -33,7 +32,7 @@ exports.register = [
}
});
}),
body("password").isLength({ min: 6 }).trim().withMessage("Password must be 6 characters or greater."),
body("password").isLength({ min: 8 }).trim().withMessage("Password must be 8 characters or greater."),
// Sanitize fields.
sanitizeBody("firstName").escape(),
sanitizeBody("lastName").escape(),
Expand All @@ -50,42 +49,25 @@ exports.register = [
}else {
//hash input password
bcrypt.hash(req.body.password,10,function(err, hash) {
// generate OTP for confirmation
let otp = utility.randomNumber(4);
// Create User object with escaped and trimmed data
var user = new UserModel(
{
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: hash,
confirmOTP: otp
}
password: hash }
);
// Html email body
let html = "<p>Please Confirm your Account.</p><p>OTP: "+otp+"</p>";
// Send confirmation email
mailer.send(
constants.confirmEmails.from,
req.body.email,
"Confirm Account",
html
).then(function(){
// Save user.
user.save(function (err) {
if (err) { return apiResponse.ErrorResponse(res, err); }
let userData = {
_id: user._id,
firstName: user.firstName,
lastName: user.lastName,
email: user.email

user.save(function (err) {
if (err) { return apiResponse.ErrorResponse(res, err); }
let userData = {
_id: user._id,
firstName: user.firstName,
lastName: user.lastName,
email: user.email
};
return apiResponse.successResponseWithData(res,"Registration Success.", userData);
});
}).catch(err => {
console.log(err);
return apiResponse.ErrorResponse(res,err);
}) ;
});
}
} catch (err) {
Expand Down Expand Up @@ -119,32 +101,23 @@ exports.login = [
//Compare given password with db's hash.
bcrypt.compare(req.body.password,user.password,function (err,same) {
if(same){
//Check account confirmation.
if(user.isConfirmed){
// Check User's account active or not.
if(user.status) {
let userData = {
_id: user._id,
firstName: user.firstName,
lastName: user.lastName,
email: user.email,
};
//Prepare JWT token for authentication
const jwtPayload = userData;
const jwtData = {
expiresIn: process.env.JWT_TIMEOUT_DURATION,
};
const secret = process.env.JWT_SECRET;
//Generated JWT token with Payload and secret.
userData.token = jwt.sign(jwtPayload, secret, jwtData);
return apiResponse.successResponseWithData(res,"Login Success.", userData);
}else {
return apiResponse.unauthorizedResponse(res, "Account is not active. Please contact admin.");
}
}else{
return apiResponse.unauthorizedResponse(res, "Account is not confirmed. Please confirm your account.");
}
}else{
let userData = {
_id: user._id,
firstName: user.firstName,
lastName: user.lastName,
email: user.email,
};
//Prepare JWT token for authentication
const jwtPayload = userData;
const jwtData = {
expiresIn: process.env.JWT_TIMEOUT_DURATION,
};
const secret = process.env.JWT_SECRET;
//Generated JWT token with Payload and secret.
userData.token = jwt.sign(jwtPayload, secret, jwtData);
return apiResponse.successResponseWithData(res,"Login Success.", userData);
}
else {
return apiResponse.unauthorizedResponse(res, "Email or Password wrong.");
}
});
Expand All @@ -156,109 +129,4 @@ exports.login = [
} catch (err) {
return apiResponse.ErrorResponse(res, err);
}
}];

/**
* Verify Confirm otp.
*
* @param {string} email
* @param {string} otp
*
* @returns {Object}
*/
exports.verifyConfirm = [
body("email").isLength({ min: 1 }).trim().withMessage("Email must be specified.")
.isEmail().withMessage("Email must be a valid email address."),
body("otp").isLength({ min: 1 }).trim().withMessage("OTP must be specified."),
sanitizeBody("email").escape(),
sanitizeBody("otp").escape(),
(req, res) => {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return apiResponse.validationErrorWithData(res, "Validation Error.", errors.array());
}else {
var query = {email : req.body.email};
UserModel.findOne(query).then(user => {
if (user) {
//Check already confirm or not.
if(!user.isConfirmed){
//Check account confirmation.
if(user.confirmOTP == req.body.otp){
//Update user as confirmed
UserModel.findOneAndUpdate(query, {
isConfirmed: 1,
confirmOTP: null
}).catch(err => {
return apiResponse.ErrorResponse(res, err);
});
return apiResponse.successResponse(res,"Account confirmed success.");
}else{
return apiResponse.unauthorizedResponse(res, "Otp does not match");
}
}else{
return apiResponse.unauthorizedResponse(res, "Account already confirmed.");
}
}else{
return apiResponse.unauthorizedResponse(res, "Specified email not found.");
}
});
}
} catch (err) {
return apiResponse.ErrorResponse(res, err);
}
}];

/**
* Resend Confirm otp.
*
* @param {string} email
*
* @returns {Object}
*/
exports.resendConfirmOtp = [
body("email").isLength({ min: 1 }).trim().withMessage("Email must be specified.")
.isEmail().withMessage("Email must be a valid email address."),
sanitizeBody("email").escape(),
(req, res) => {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return apiResponse.validationErrorWithData(res, "Validation Error.", errors.array());
}else {
var query = {email : req.body.email};
UserModel.findOne(query).then(user => {
if (user) {
//Check already confirm or not.
if(!user.isConfirmed){
// Generate otp
let otp = utility.randomNumber(4);
// Html email body
let html = "<p>Please Confirm your Account.</p><p>OTP: "+otp+"</p>";
// Send confirmation email
mailer.send(
constants.confirmEmails.from,
req.body.email,
"Confirm Account",
html
).then(function(){
user.isConfirmed = 0;
user.confirmOTP = otp;
// Save user.
user.save(function (err) {
if (err) { return apiResponse.ErrorResponse(res, err); }
return apiResponse.successResponse(res,"Confirm otp sent.");
});
});
}else{
return apiResponse.unauthorizedResponse(res, "Account already confirmed.");
}
}else{
return apiResponse.unauthorizedResponse(res, "Specified email not found.");
}
});
}
} catch (err) {
return apiResponse.ErrorResponse(res, err);
}
}];
Loading