nl_tokens: Bind a set of policies to a set of controllers ( prepend policy chains to original middleware )
pl_tokens: function _bindPolicies ( mapping , middlewareSet ) { _ . each ( middlewareSet , function ( _c , id ) { var topLevelPolicyId = mapping [ id ] ; var actions , actionFn ; var controller = middlewareSet [ <mask> ] ; // If a policy doesn't exist for this controller, use '*' if ( _ . isUndefined ( topLevelPolicyId ) ) { topLevelPolicyId = mapping [ '*' ] ; } // Build list of actions if ( util . isDictionary ( controller ) ) { actions = _ . functions ( controller ) ; } // If this is a controller policy, apply it immediately if ( ! util . isDictionary ( topLevelPolicyId ) ) { // :: Controller is a container object // -> apply the policy to all the actions if ( util . isDictionary ( controller ) ) { // sails.log.verbose('Applying policy (' + topLevelPolicyId + ') to controller\'s (' + id + ') actions...'); _ . each ( actions , function ( actionId ) { actionFn = controller [ actionId ] ; controller [ actionId ] = topLevelPolicyId . concat ( [ actionFn ] ) ; // sails.log.verbose('Applying policy to ' + id + '.' + actionId + '...', controller[actionId]); } ) ; return ; } // :: Controller is a function // -> apply the policy directly // sails.log.verbose('Applying policy (' + topLevelPolicyId + ') to top-level controller middleware fn (' + id + ')...'); middlewareSet [ id ] = topLevelPolicyId . concat ( controller ) ; } // If this is NOT a top-level policy, and merely a container of other policies, // iterate through each of this controller's actions and apply policies in a way that makes sense else { _ . each ( actions , function ( actionId ) { var actionPolicy = mapping [ id ] [ actionId ] ; // sails.log.verbose('Mapping policies to actions.... ', actions); // If a policy doesn't exist for this controller/action, use the controller-local '*' if ( _ . isUndefined ( actionPolicy ) ) { actionPolicy = mapping [ id ] [ '*' ] ; } // if THAT doesn't exist, use the global '*' policy if ( _ . isUndefined ( actionPolicy ) ) { actionPolicy = mapping [ '*' ] ; } // sails.log.verbose('Applying policy (' + actionPolicy + ') to action (' + id + '.' + actionId + ')...'); actionFn = controller [ actionId ] ; controller [ actionId ] = actionPolicy . concat ( [ actionFn ] ) ; } ) ; } } ) ; }