sails-hook-parametized-policies

$ npm install --save sails-hook-parametized-policies

Usage no npm install needed!

<script type="module">
  import sailsHookParametizedPolicies from 'https://cdn.skypack.dev/sails-hook-parametized-policies';
</script>

README

sails-hook-parametized-policies Build Status Coverage Status

Install

$ npm install --save sails-hook-parametized-policies

Setup

add your factories inside api/policyFactories or in the folder you defined on sails.config.paths.policyFactories

example: is.js

module.exports = function(userType){

    return function(req, res, next){

        var roles = req.user.roles;

        if(roles.indexOf(userType) > 0){
            return next();
        }

        res.forbidden('You must be an ' + userType + ' to access this resource');
    };
};

or a more complex one: or.js

module.exports = function(firstPolicy, secondPolicy){

    return function(req, res, next){


        var fakeRes = {};

        for(var i in res){
            if(i === 'forbidden'){
                // override the functions you want the `or` factory to handle
                fakeRes[i] = function(){
                    secondPolicy(req, res, next);
                };
            }
            else{
                fakeRes[i] = res[i];
            }
        }


        firstPolicy(req, fakeRes, next);
    }
}

Usage

in your config/policies.js

{
    ProfileController: {
        edit: 'isLoggedIn'
        create: ['or(is(\'Admin\'), is(\'SubAdmin\'))', 'isLoggedIn'],
        delete: ['is(\'Admin\')', 'isLoggedIn'],
    }
}