diff --git a/app/controllers/api/jwtlogin.js b/app/controllers/api/jwtlogin.js index ca55503..fc0af9b 100644 --- a/app/controllers/api/jwtlogin.js +++ b/app/controllers/api/jwtlogin.js @@ -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 ============================== */ diff --git a/app/controllers/api/signup.js b/app/controllers/api/signup.js index f5f733c..2619a40 100644 --- a/app/controllers/api/signup.js +++ b/app/controllers/api/signup.js @@ -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 ============================== */ diff --git a/app/controllers/web/login.js b/app/controllers/web/login.js index 9e4d638..72c5ab4 100644 --- a/app/controllers/web/login.js +++ b/app/controllers/web/login.js @@ -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 = { diff --git a/app/controllers/web/networks.js b/app/controllers/web/networks.js index 6157291..4ab0064 100644 --- a/app/controllers/web/networks.js +++ b/app/controllers/web/networks.js @@ -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 @@ -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); @@ -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); diff --git a/app/controllers/web/setting.js b/app/controllers/web/setting.js index ee3249d..ac2ae5b 100644 --- a/app/controllers/web/setting.js +++ b/app/controllers/web/setting.js @@ -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'); diff --git a/app/controllers/web/signup.js b/app/controllers/web/signup.js index 8f723a6..4550720 100644 --- a/app/controllers/web/signup.js +++ b/app/controllers/web/signup.js @@ -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 = { diff --git a/app/controllers/web/user.js b/app/controllers/web/user.js index 95bef96..e71445c 100644 --- a/app/controllers/web/user.js +++ b/app/controllers/web/user.js @@ -1,6 +1,4 @@ 'use strict'; -const Mongoose = require('mongoose'); -const User = Mongoose.model('User'); const Joi = require('joi'); const Email = require('./email'); diff --git a/app/helpers/login.js b/app/helpers/login.js index fb24b5c..07f3432 100644 --- a/app/helpers/login.js +++ b/app/helpers/login.js @@ -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) { @@ -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, diff --git a/app/helpers/setting.js b/app/helpers/setting.js index 517125c..7547898 100644 --- a/app/helpers/setting.js +++ b/app/helpers/setting.js @@ -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)) { @@ -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) { @@ -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) { diff --git a/app/helpers/signup.js b/app/helpers/signup.js index 1c0540e..a24365b 100644 --- a/app/helpers/signup.js +++ b/app/helpers/signup.js @@ -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) { @@ -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) { @@ -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); } diff --git a/app/helpers/user.js b/app/helpers/user.js index a8f6064..37c0211 100644 --- a/app/helpers/user.js +++ b/app/helpers/user.js @@ -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); diff --git a/lib/jwtAuth.js b/lib/jwtAuth.js index f8748b3..2de4679 100644 --- a/lib/jwtAuth.js +++ b/lib/jwtAuth.js @@ -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', { @@ -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 diff --git a/lib/mongoose.js b/lib/mongoose.js index 71b483e..65a63de 100644 --- a/lib/mongoose.js +++ b/lib/mongoose.js @@ -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); @@ -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'