Ejemplo n.º 1
0
export default function () {
	const app = this

	app.service('api/servers', memory({
		store: {
			1: {
				id: 1,
				slug: 'chatrealm',
				name: config.get('irc.server.name'),
				settings: {
					host: config.get('irc.server.host'),
					nick: config.get('irc.server.nick')
				}
			}
		}
	}))

	const serversService = app.service('api/servers')

	serversService.before({
		create: [disallow()],
		update: [disallow()],
		patch: [disallow()],
		remove: [disallow()]
	})

	serversService.after({
		all: [iff(isProvider('external'), discard('settings'))]
	})

	serversService.filter(data => {
		return _.pick(data, ['id', 'slug', 'name'])
	})
}
Ejemplo n.º 2
0
export default app => {
  const service = createService({
    model: Product
  })

  app.use('/products', service)
  app
    .service('products')
    .hooks({
      before: {
        all: [],
        find: [],
        get: [],
        create: [disallow('external')],
        update: [disallow()],
        patch: [disallow('external')],
        remove: [disallow('external')]
      },
      after: {
        all: [],
        find: [],
        get: [],
        create: [],
        patch: [],
        remove: []
      },
      error: {
        all: [],
        find: [],
        get: [],
        create: [],
        patch: [],
        remove: []
      }
    })
    .hooks({
      after: {
        all: [filterAllowedFields]
      }
    })
}
    all: [],
    find: [],
    get: [],
    create: [
      validate(schemaValidator),
      context => {
        const { data, params } = context;

        context.data = {
          text: data.text,
          sentBy: params.user ? params.user._id : null, // Set the id of current user
          createdAt: new Date()
        };
      }
    ],
    update: disallow(),
    patch: [
      auth.hooks.authenticate('jwt'),
      restrictToOwner({ ownerField: 'sentBy' }),
      iff(isProvider('external'), keep('text'))
    ],
    remove: disallow()
  },
  after: {
    all: [],
    find: joinAuthor,
    get: joinAuthor,
    create: joinAuthor,
    update: [],
    patch: joinAuthor,
    remove: []
const messagesHooks = {
  before: {
    all: auth.hooks.authenticate('jwt'),
    find: [],
    get: [],
    create: [
      validate(schemaValidator),
      hook => {
        hook.data = {
          text: hook.data.text,
          sentBy: hook.params.user._id, // Set the id of current user
          createdAt: new Date()
        };
      }
    ],
    update: disallow(),
    patch: disallow(),
    remove: disallow()
  },
  after: {
    all: [],
    find: [
      populateUser(),
      discard('sentBy.password')
    ],
    get: [
      populateUser(),
      discard('sentBy.password')
    ],
    create: [
      populateUser(),
Ejemplo n.º 5
0
export default app => {
  const service = createService({
    model: Depot,
    allowedEager: '[farms.[products], ownerships]',
    whitelist: ['$eager', '$select', '$details'],
    eagerFilters: [
      {
        expression: 'farms',
        filter: builder => {
          builder.select(entryColumns('farms'))
        }
      },
      {
        expression: 'ownerships',
        filter: builder => {
          builder.select(['users.id', 'email', 'name', 'origin', 'baseurl'])
        }
      }
    ]
  })

  app.use('/depots', service)

  app
    .service('depots')
    .hooks({
      before: {
        all: [],
        find: [
          iffElse(
            ctx => ctx.params.query.$details !== 'true',
            [selectEntryColumns],
            [withEager('[farms.[products]]')]
          ),
          ctx => {
            delete ctx.params.query.$details
            return ctx
          },
          selectActiveEntries
        ],
        get: [withEager('[farms.[products]]'), selectActiveEntries],
        create: [setCreatedAt],
        update: [disallow()],
        patch: [setUpdatedAt],
        remove: []
      },
      after: {
        all: [],
        find: [],
        get: [],
        create: [relate(Depot, 'farms'), relateOwner, sendNewEntryNotification],
        patch: [relate(Depot, 'farms')],
        remove: []
      },
      error: {
        all: [],
        find: [],
        get: [],
        create: [],
        patch: [],
        remove: []
      }
    })
    .hooks({
      after: {
        all: [filterAllowedFields, refreshSearchIndex, toGeoJSON('farms')]
      }
    })
}
Ejemplo n.º 6
0
const restrict = [
  authenticate('jwt'),
  restrictToOwner({
    idField: '_id',
    ownerField: '_id'
  })
];

module.exports = {
  before: {
    all: [],
    find: [ authenticate('jwt'), insensitive() ],
    get: [ ...restrict ],
    create: [ hashPassword(), streamkey.initialize(), commonHooks.lowerCase('email','username'), verifyHooks.addVerification() ],
    update: [ ...restrict, commonHooks.disallow('external'), commonHooks.lowerCase('email','username') ],
    patch: [ ...restrict, streamkey.considerReset(), commonHooks.lowerCase('email','username'), 
    commonHooks.iff(
      commonHooks.isProvider('external'),
        commonHooks.preventChanges(true,
          'email',
          'isVerified',
          'verifyToken',
          'verifyShortToken',
          'verifyExpires',
          'verifyChanges',
          'resetToken',
          'resetShortToken',
          'resetExpires',
        ),
        hashPassword(),