const disallowExternal = (hook: BeforeHookContext<DefaultDocument>) => { if (hook.path === 'authentication') { return hook; } return disallow('external')(hook); };
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,
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 },
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, }, }; }, }, };