Created
March 2, 2015 12:31
-
-
Save mphasize/e9ed62f9d139d2152445 to your computer and use it in GitHub Desktop.
Sails-beforeBlueprint-Policy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* beforeBlueprint | |
* | |
* @module :: Policy | |
* @description :: Simple policy to enable hooks into the model which can act upon req, res objects. | |
* @docs :: http://sailsjs.org/#!documentation/policies | |
* | |
*/ | |
var actionUtil = require( 'sails/lib/hooks/blueprints/actionUtil' ); | |
capitaliseFirstLetter = function ( string ) { | |
return string.charAt( 0 ).toUpperCase() + string.slice( 1 ); | |
}; | |
module.exports = function ( req, res, next ) { | |
var Model = actionUtil.parseModel( req ); | |
var blueprint = capitaliseFirstLetter( req.options.action ); // we actually enable this for all actions, not only blueprints | |
if ( typeof Model[ "controlBefore" + blueprint ] === "function" ) { | |
var result = Model[ "controlBefore" + blueprint ]( req, res, next ); | |
//next(); | |
} else { | |
sails.log.debug( 'Policy beforeBlueprint: Model "' + Model.identity + '" has no method controlBefore' + blueprint + '.' ); | |
next(); | |
} | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Model defintion api/models/user.js | |
module.exports = { | |
attributes: { | |
name: "string", | |
"posts": { | |
collection: "post", | |
via: "user" | |
} | |
}, | |
// beforeFind hook to modify the request before it hits the find blueprint | |
// other hooks possible, with the naming schema of controlBefore*Blueprint | |
controlBeforeFind: function ( req, res, next ) { | |
// modify req.options.where OR req.body OR req.query as you need | |
next(); | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@IanVS
This is a workaround to implement custom lifecycle callback. To check unique username before user creation you can use the default lifecycle callback
beforeCreate
in your model like:Please refer docs for details.