router.post("/sign-in", function (req, res, next) { return Bluebird.try(async() => { if (!validations.signInUserValidate(req.body)) { throw validations.constructError(validations.signInUserValidate.errors); } // Code after api validation let postData = req.body; let userFound = await UserController.findUserByEmailOrUsername(postData.email); let response = {success:false}; if(userFound){ let isPasswordValid = utils.matchPassword(postData.password,userFound.password); if(isPasswordValid){ let signValues = { id: userFound._id }; let token = await utils.signToken(signValues); response.success = true; response.data = {userDetails:userFound,token:token}; }else{ response.success = false; response.errorCode = customErrors.ERROR_CODES.DATABASE_ERROR.INVALID_PASSWORD.CODE; response.reason = customErrors.ERROR_CODES.DATABASE_ERROR.INVALID_PASSWORD.MESSAGE; } }else{ response.success = false; response.errorCode = customErrors.ERROR_CODES.DATABASE_ERROR.INVALID_EMAIL_OR_USERNAME.CODE; response.reason = customErrors.ERROR_CODES.DATABASE_ERROR.INVALID_EMAIL_OR_USERNAME.MESSAGE; } return res.status(200).send(response); }); });