Skip to content
Open
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
2 changes: 0 additions & 2 deletions app/controllers/api/jwtlogin.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ var Boom = require('boom');
var JWT = require('jsonwebtoken');
const Joi = require('joi');
const Config = require('../../../config/config');
const Mongoose = require('mongoose');
const User = Mongoose.model('User');
const loginHelper = require('../../helpers/login');

/* ================================== Controllers for V1 ============================== */
Expand Down
2 changes: 0 additions & 2 deletions app/controllers/api/signup.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ var Boom = require('boom');
var JWT = require('jsonwebtoken');
const Joi = require('joi');
const Config = require('../../../config/config');
const Mongoose = require('mongoose');
const User = Mongoose.model('User');
const signupHelper = require('../../helpers/signup');

/* ================================== Controllers for V1 ============================== */
Expand Down
2 changes: 0 additions & 2 deletions app/controllers/web/login.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
'use strict';

const Mongoose = require('mongoose');
const Joi = require('joi');
const User = Mongoose.model('User');
const loginHelper = require('../../helpers/login');

exports.showForm = {
Expand Down
6 changes: 2 additions & 4 deletions app/controllers/web/networks.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
'use strict';
const Mongoose = require('mongoose');
const Joi = require('joi');
const User = Mongoose.model('User');

exports.connect = function(provider) {
// Return config object for hapi route
Expand All @@ -25,7 +23,7 @@ exports.connect = function(provider) {
var options = {
new: true
};
let user = await User.findByIdAndUpdate(id, update, options);
let user = await global.User_findByIdAndUpdate(id, update, options);
// Reset the session
request.cookieAuth.clear();
request.cookieAuth.set(user);
Expand All @@ -52,7 +50,7 @@ exports.disconnect = {
var options = {
new: true
};
let user = await User.findByIdAndUpdate(id, update, options);
let user = await global.User_findByIdAndUpdate(id, update, options);
// Reset the session
request.cookieAuth.clear();
request.cookieAuth.set(user);
Expand Down
2 changes: 0 additions & 2 deletions app/controllers/web/setting.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@

const Mongoose = require('mongoose');
const User = Mongoose.model('User');
const Joi = require('joi');
const Email = require('./email');
const settingHelper = require('../../helpers/setting');
Expand Down
2 changes: 0 additions & 2 deletions app/controllers/web/signup.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
'use strict';

const Mongoose = require('mongoose');
const Joi = require('joi');
const Boom = require('boom');
const User = Mongoose.model('User');
const signupHelper = require('../../helpers/signup');

exports.showForm = {
Expand Down
2 changes: 0 additions & 2 deletions app/controllers/web/user.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
'use strict';
const Mongoose = require('mongoose');
const User = Mongoose.model('User');
const Joi = require('joi');
const Email = require('./email');

Expand Down
4 changes: 1 addition & 3 deletions app/helpers/login.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
'use strict';
const Mongoose = require('mongoose');
const User = Mongoose.model('User');

exports.findByCredentials = async function (username, password) {
return new Promise(async function (resolve, reject) {
Expand All @@ -11,7 +9,7 @@ exports.findByCredentials = async function (username, password) {
} else {
query.username = username.toLowerCase();
}
let user = await User.findOne(query);
let user = await global.User_findOne(query);
if (!user || !user.authenticate(password)) {
return resolve({
statusCode: 401,
Expand Down
9 changes: 3 additions & 6 deletions app/helpers/setting.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
'use strict';
const Mongoose = require('mongoose');
const User = Mongoose.model('User');
const Crypto = require('crypto');


exports.updatePassword = (request, old_pwd, new_pwd) => {
return new Promise(async (resolve, reject) => {
try {
let user = await User.findOne({
let user = await global.User_findOne({
email: request.auth.credentials.email
});
if (!user || !user.authenticate(old_pwd)) {
Expand Down Expand Up @@ -35,7 +32,7 @@ exports.updatePassword = (request, old_pwd, new_pwd) => {
exports.generateResetPasswordToken = async (email) => {
return new Promise(async (resolve, reject) => {
try {
let user = await User.findOne({
let user = await global.User_findOne({
email: email
});
if (!user) {
Expand All @@ -59,7 +56,7 @@ exports.generateResetPasswordToken = async (email) => {
exports.resetForgotPassword = async (request, newPassword, token) => {
return new Promise( async (resolve, reject) => {
try {
let user = await User.findOne({
let user = await global.User_findOne({
resetPasswordToken: token
});
if (!user) {
Expand Down
7 changes: 2 additions & 5 deletions app/helpers/signup.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
'use strict';
const Mongoose = require('mongoose');
const User = Mongoose.model('User');

exports.signUpUser = async function (userData) {
return new Promise(async function (resolve, reject) {
Expand All @@ -9,8 +7,7 @@ exports.signUpUser = async function (userData) {
if(data){
return resolve({statusCode : 409, message : 'User already exist'});
}else{
let user = new User(userData);
let savedUser = await user.save();
let savedUser = await global.User_create(userData);
return resolve({statusCode : 201, message : 'Sign up successfully', user : savedUser});
}
} catch (error) {
Expand All @@ -24,7 +21,7 @@ async function isUserAlreadyExist(email) {
try {
var query = {};
query.email = email.toLowerCase();
let user = await User.findOne(query);
let user = await global.User_findOne(query);
if (user) {
return resolve(user);
}
Expand Down
5 changes: 2 additions & 3 deletions app/helpers/user.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
'use strict';
const Mongoose = require('mongoose');
const User = Mongoose.model('User');

const Joi = require('joi');

// Helper method for finding user details can be called from web and mobile api controller.
exports.findUserDetails = async (userId)=>{
return new Promise(async (resolve,reject)=>{
try {
let userDetails = await User.findOne({_id : Mongoose.Types.ObjectId(userId)},'-password -salt -__v -resetPasswordExpires -resetPasswordToken');
let userDetails = await global.User_findDetails(userId);
return resolve(userDetails);
} catch (error) {
return reject(error);
Expand Down
8 changes: 3 additions & 5 deletions lib/jwtAuth.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict';

const Mongoose = require('mongoose');
const UserHelper = require('../../helpers/user');

exports.plugin = {
register: (server, options) => {
server.auth.strategy('jwt', 'jwt', {
Expand All @@ -18,15 +19,12 @@ exports.plugin = {

// bring your own validation function
const validate = async (decoded, request) => {
const User = Mongoose.model('User');
try {
// do your checks to see if the person is valid
let userId = decoded.userId;
// Set user id in every request header.
request.headers.userId = userId;
let user = await User.findOne({
_id: Mongoose.Types.ObjectId(userId)
});
let userDetails = await UserHelper.findUserDetails(userId);
if (user) {
return {
isValid: true
Expand Down
29 changes: 29 additions & 0 deletions lib/mongoose.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,30 @@
const Mongoose = require('mongoose');
const Glob = require('glob');

async function User_findDetails(userId) {
let found = await global.UserModel.findOne(
{_id : Mongoose.Types.ObjectId(userId)},
'-password -salt -__v -resetPasswordExpires -resetPasswordToken'
);
return found;
}

async function User_create(userData) {
let user = new global.UserModel(userData);
let savedUser = await user.save();
return savedUser;
}

async function User_findOne(query) {
let user = await global.UserModel.findOne(query);
return user;
}

async function User_findByIdAndUpdate(id, update, options) {
let user = await global.UserModel.findByIdAndUpdate(id, update, options);
return user;
}

exports.plugin = {
register: (plugin, options) => {
Mongoose.set('useCreateIndex', true);
Expand Down Expand Up @@ -32,6 +56,11 @@ exports.plugin = {
models.forEach(function(model) {
require('../' + model);
});
global.UserModel = Mongoose.model('User');
global.User_findDetails = User_findDetails;
global.User_create = User_create;
global.User_findOne = User_findOne;
global.User_findByIdAndUpdate = User_findByIdAndUpdate;
},
pkg: require('../package.json'),
name : 'mongoose'
Expand Down