// When someone goes to create a new instructor, we // should check whether they exist already. This is a good // use case for route prerequisites const verifyUniqueInstructor = (request, reply) => { const name = request.payload.name; const existingInstructor = instructorsData.find( instructor => instructor.name === name ); if (existingInstructor) { return reply(Boom.badRequest('Instructor exists')); } return reply(); }
Article.destroy({id: article.id}, function (err) { if (err) { return reply(Boom.badRequest(Errorhandler.getErrorMessage(err))); } else { reply(article); } });
async handler(request, h) { const token = request.query.token; const email = jsonwebtoken.verify(token, process.env.SECRET_KEY); let user = await User.findOne({ email }); if (!user || !token) { Boom.badRequest('Invalid token'); } user.update({ active: true }); return { success: true, message: 'Account successfully activated!' }; }
/** * Checks if an email exists * @param {object} req request * @param {object} res response * @return {object} reply w/ does the email exist? */ async validateEmail(req, res) { const exists = !await helperFunctions.validateUniqueEmail(req); if (!exists) return res(Boom.badRequest('No such email address')); return res(exists); }
User.update({id: user.id}, user) .exec(function (err, users) { if (err) { return reply(Boom.badRequest(ErrorHandler.getErrorMessage(err))); } else { user = users[0].toJSON(); return login(request, reply, user, reply(user)); } });
/**++++++++++++++++++++++++++++++* * Static Model Methods **++++++++++++++++++++++++++++++*/ User.defineStatic('findById', function findById (id) { if (_.isEmpty(id)) { return when.reject(Boom.badRequest('User id missing.')) } return this.get(id).run().then(function (user) { if (user) { return when.resolve(user) } return when.reject(Boom.notFound('No user registered with provided credentials.')) }) })
// Then save the user User.create(user, function (err, user) { if (err) { return reply(Boom.badRequest(ErrorHandler.getErrorMessage(err))); } else { user = user.toJSON(); return login(request, reply, user, reply(user)); } });
request.server.app.authCache.set(id, user, 1000 * 60 * 60 * 24, function (err) { if (err) { return reply(Boom.badRequest(err)); } });
/** * Add method "comparePassword" to user model * * This method checks whether the provided candidate password matches the * user password */ User.define('comparePassword', function (candidatePassword) { const self = this return when.promise(function (resolve, reject) { bcrypt.compare(candidatePassword, self.password, function (err, isMatch) { if (isMatch) { return resolve(self) } return reject(Boom.badRequest('The entered password is not correct.')) }) }) })
User.update(reqUser.id, request.payload).exec(function (err, user) { if (err) { return reply(Boom.badRequest(Errorhandler.getErrorMessage(err))); } else { user = user[0].toJSON(); request.server.app.authCache.set(request.auth.artifacts.id, user, 1000 * 60 * 60 * 24, function (err) { if (err) { return reply(Boom.badRequest(err)); } }); return reply(user); } });
Article.create(article, function (err, article) { if (err) { return reply(Boom.badRequest(Errorhandler.getErrorMessage(err))); } else { article.user = { id: user.id, displayName: user.displayName, username: user.username, email: user.email || '' }; reply(article); } });
User .find() // Deselect the password and version fields .select('-password -__v') .exec((error, users) => { if (error) { reply(Boom.badRequest(error)) return } if (!users.length) { reply(Boom.notFound('No users found!')) return } reply(users) })
/** * Confirms that submitted username & email are new * @param {object} req request * @param {object} res response * @return {object} The submitted user information */ async validateUniqueUser(req, res) { const isUsernameUnique = await helperFunctions.validateUniqueUsername(req); if (!isUsernameUnique) { return res(Boom.badRequest('Username taken')); } const isEmailUnique = helperFunctions.validateUniqueEmail(req); if (!isEmailUnique) { return res(Boom.badRequest('Email taken')); } return res(); }
/** * Checks if an email exists * @param {object} req request * @param {object} res response * @return {object} reply w/ does the email exist? */ async validateEmail(req, res) { const exists = !await helperFunctions.validateUniqueEmail(req); if (!exists) return res(Boom.badRequest('No such email address')); return res(exists); }
/** * Confirms that submitted username & email are new * @param {object} req request * @param {object} res response * @return {object} The submitted user information */ async validateUniqueUser(req, res) { const isUsernameUnique = await helperFunctions.validateUniqueUsername(req); if (!isUsernameUnique) { return res(Boom.badRequest('Username taken')); } const isEmailUnique = helperFunctions.validateUniqueEmail(req); if (!isEmailUnique) { return res(Boom.badRequest('Email taken')); } return res(); }