seba:method-hooks

v3.0.2Published 3 years ago

This package has not had recent updates. Please investigate it's current state before committing to using it in your project.

Meteor Method Hooks

Before/after hooks for Meteor methods

This package extends Meteor with four methods:

  • Meteor.beforeMethod
  • Meteor.afterMethod
  • Meteor.beforeAllMethods
  • Meteor.afterAllMethods

This package differs from hitchcott:method-hooks in that:

  • You can add hooks for all methods
  • It works on both client and server
  • You can add and remove hooks at runtime.
  • After methods can change the methods result

The beforeMethod method can be used for securing Meteor.methods based on the result of a definable function. Any beforeMethod that throws an error will stop the relevant method and any other hooks from executing. If you want to prevent further execution without triggering an error, you can just return 'false' from within your hook.

Here's an example for checking user login:

1Meteor.beforeMethod('test',function(){
2  if(!Meteor.userId()) throw new Meteor.Error(403,"Forbidden");
3})

You can also pass an array of method names as first parameter.

Uses include:

  • Security
  • Logging
  • [insert imaginative idea]

The before methods get the same arguments as the original method,

The after method can get the current result from this.result or the error from this.error If it returns a value that is not undefined, then this will replace the original result.

TODO

  • Testing

Credits

Inspired by: Chris Hitchcott, 2015