Example #1
0
const disallowExternal = (hook: BeforeHookContext<DefaultDocument>) => {
  if (hook.path === 'authentication') {
    return hook;
  }

  return disallow('external')(hook);
};
Example #2
0
import validateInSteamGroup from './validate-in-steam-group';
import validateHours from './validate-hours';

const log = debug('TF2Pickup:users:hooks');
const inviteUserToGroup = promisify(steamCommunity.inviteUserToGroup.bind(steamCommunity));

const hooks: Hooks<User> = {
  before: {
    create: [
      // Validate that the userId is in the steam group when the website is in beta mode
      validateInSteamGroup,
      // Validate the users TF2 hours
      validateHours,
    ],
    remove: disallow(),
  },

  after: {
    create: [
      (hook) => {
        log('Created a new user', {
          userId: hook.result.id,
          data: hook.result,
        });
      },
      // Create the rest of the documents for a userId.
      async (hook: CreateAfterHookContext<User>) => {
        await hook.app.service('user-settings').create({
          id: hook.result.id,
          volume: 0.7,
Example #3
0
function requireAuth(
  hook: BeforeHookContext<DefaultDocument>
) {
  if (hook.params.provider === 'external') {
    return auth.hooks.authenticate(['jwt'])(hook);
  }

  return hook;
}

const hooks: Hooks<DefaultDocument> = {
  before: {
    find: requireAuth,
    get: requireAuth,
    // Completely disallow the update hook
    update: disallow(),
    // Disallow every patch, remove, create call from external
    patch: disallowExternal,
    remove: disallowExternal,
    create: disallowExternal,
  },

  error: {
    all(hook) {
      if (hook.error.code === 404) {
        return hook;
      }

      log(
        `Error in '${hook.path}' service method ${hook.method.toUpperCase()}`,
        { error: hook.error },
Example #4
0
import { CreateBeforeHookContext } from '@feathersjs/feathers';
import hooks from 'feathers-hooks-common';
import UserProfile from '@typings/UserProfile';

import getUserData from './get-user-data';

export default {
  before: {
    find: hooks.disallow(),
    remove: hooks.disallow(),
    async create(hook: CreateBeforeHookContext<UserProfile>) {
      const data = await getUserData(hook.data);

      return {
        ...hook,
        data: {
          ...hook.data,
          ...data,
        },
      };
    },
  },
};