2.1.3 • Published 5 years ago

@e-me/feathers-awesome-permissions v2.1.3

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

Feathers awesome permissions

Advertencia: No es una versión definitiva ya que requiere optimización y de momento solo es compatible con servicios basados en sequelize (al menos en cuanto y su sistema interno) y requiere de un servicio “users”.

Instalacion

npm

npm install @e-me/feathers-awesome-permissions --save

yarn

yarn add @e-me/feathers-awesome-permissions

Configuracion

src/service/index.js

// Configure the Feathers services. (Can be re-generated.)

// !code: imports
...
let {Services} =  require('@e-me/feathers-awesome-permissions');
...
// !end

// !code: init // !end

// eslint-disable-next-line no-unused-vars
let  moduleExports  =  function (app) {
// !code: func_return
...
app.configure(Services('sequelize'));
...
// !end
};

// !code: exports // !end

module.exports  =  moduleExports;

// !code: funcs // !end
// !code: end // !end

service hook de ejemplo

// Hooks for service `users`. (Can be re-generated.)
const  commonHooks  =  require('feathers-hooks-common');

// eslint-disable-next-line no-unused-vars
const { hashPassword, protect } =  require('@feathersjs/authentication-local').hooks;

// !code: imports
const {Permissions: {getUserRoles, getUserPermissions}} =  require('@e-me/feathers-awesome-permissions');
const {giveAccessTo, grantAccessTo} =  require('@e-me/feathers-awesome-permissions');
const  restrictMasiveUpdate  =  require('../../hooks/restrict-masive-update');
// !end

// !code: used
// eslint-disable-next-line no-unused-vars
const { iff, isProvider, fastJoin } =  commonHooks;
// !end

// !code: init
const  resolvers  = {
    joins: {
	    permissions: () =>  async (user, context) => {
		    user.roles  =  await  getUserRoles(context);
		    user.permissions  =  getUserPermissions(context, {roles:  user.roles});
	    }
    }
};
// !end

let  moduleExports  = {
before: {
    // !code: before
    all: [],
    find: [
	    giveAccessTo()
    ],
    get: [
	    giveAccessTo()
    ],
    create: [
	    hashPassword()
    ],
    update: [
	    hashPassword(),
	    giveAccessTo()
    ],
    patch: [
	    hashPassword(),
	    giveAccessTo()
    ],
    remove: [
	    giveAccessTo()
    ]
    // !end
},
after: {
    // !code: after
    all: [
	    protect('password'),
	    iff(isProvider('external'), fastJoin(resolvers))
    ],
    find: [],
    get: [],
    create: [
	    grantAccessTo()
    ],
    update: [],
    patch: [],
    remove: []
    // !end
},
error: {
    // !<DEFAULT> code: error
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
    // !end
},

// !code: moduleExports // !end

};

// !code: exports // !end

module.exports  =  moduleExports;

// !code: funcs // !end
// !code: end // !end

options

giveAccessTo()

optiontipodesctiptions
mode'strict'|'trust'trust: es un modo donde se parte de que el usuario tiene permisos de todo y se le quitan si no tiene uno de los permisos especificados en "requiredPermissions" (no se recomienda su uso)
adminRolestringpor motivos de seguridad se recomienda que solo se le otorge a un usuario
entitystring
allowAnonymousUsersboolean
anonymousUserIdnumberpor defecto es 0
requiredPermissions{domain: string, action: string},...
restrictToOwner{ownerField: string, otherField: string}
onlyAdminarray\<string>|booleancuando es un array de strings se espera que el string sea el nombre del metodo en el que solo se permiten administradores

grantAccessTo()

optiontipodesctiptions
rolePrefixstring
entityFieldstring
userEntitystring
domainstring
actionsarray\<string>

sitio web de los creadores: e-me.co

2.1.3

5 years ago

2.1.2

5 years ago

2.1.1

5 years ago

2.1.0

5 years ago

2.0.11-alpha

5 years ago

2.0.10-alpha

5 years ago

2.0.9-alpha

5 years ago

2.0.8-alpha

5 years ago

2.0.7-alpha

5 years ago

2.0.6-alpha

5 years ago

2.0.5-alpha

5 years ago

2.0.4-alpha

5 years ago

2.0.3-alpha

5 years ago

2.0.2-alpha

5 years ago

2.0.1-alpha

5 years ago

2.0.0-alpha

5 years ago

1.0.3-alpha

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago