All files hooks.js

0% Statements 0/38
0% Branches 0/16
0% Functions 0/9
0% Lines 0/35
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66                                                                                                                                   
 
/* eslint no-param-reassign: 0 */
 
const errors = require('feathers-errors');
const utils = require('feathers-hooks-common/lib/utils');
 
const { getLongToken, getShortToken } = require('./helpers');
 
let options = {};
 
module.exports.hooksInit = (options1) => {
  options = options1;
};
 
module.exports.addVerification = (options1) => (hook) => {
  utils.checkContext(hook, 'before', 'create');
 
  const ourOptions = Object.assign({}, options, options1);
 
  return Promise.all([
    getLongToken(ourOptions.longTokenLen),
    getShortToken(ourOptions.shortTokenLen, ourOptions.shortTokenDigits)
  ])
    .then(([longToken, shortToken]) => {
      hook.data.isVerified = false;
      hook.data.verifyExpires = Date.now() + ourOptions.delay;
      hook.data.verifyToken = longToken;
      hook.data.verifyShortToken = shortToken;
 
      return hook;
    })
    .catch(err => { throw new errors.GeneralError(err); });
};
 
module.exports.isVerified = () => (hook) => {
  utils.checkContext(hook, 'before');
 
  if (!hook.params.user || !hook.params.user.isVerified) {
    throw new errors.BadRequest('User\'s email is not yet verified.');
  }
};
 
module.exports.removeVerification = (ifReturnTokens) => (hook) => {
  utils.checkContext(hook, 'after');
  const user = (hook.result || {});
 
  if (!('isVerified' in user) && hook.method === 'create') {
    /* eslint-disable no-console */
    console.warn('Property isVerified not found in user properties. (removeVerification)');
    console.warn('Have you added verify-reset\'s properties to your model? (Refer to README.md)');
    console.warn('Have you added the addVerification hook on users::create?');
    /* eslint-enable */
  }
 
  if (hook.params.provider && user) { // noop if initiated by server
    delete user.verifyExpires;
    delete user.resetExpires;
    if (!ifReturnTokens) {
      delete user.verifyToken;
      delete user.verifyShortToken;
      delete user.resetToken;
      delete user.resetShortToken;
    }
  }
};