1.1.0 • Published 3 years ago

@climba03003/fastify-endpoint-rbac v1.1.0

Weekly downloads
-
License
GPL-3.0
Repository
github
Last release
3 years ago

@climba03003/fastify-endpoint-rbac

This plugin used to manage the endpoint role-base access control. It will collect all the specified roles and you can specify how to check the access control globally or per-route.

Install

npm install @climba03003/fastify-endpoint-rbac --save

yarn add @climba03003/fastify-endpoint-rbac

Usage

import FastifyRBAC from '@climba03003/fastify-endpoint-rbac'

fastify.register(FastifyRBAC, {
  // how to retrieve account roles
  retrieveAccountRoles(request, reply) {
    return [] // must return array or promise array
  },
  // how to check rbac globally
  checkRBAC(routeRoles, accountRoles) {
    return true // must return boolean or promise boolean
  },
  // change the error message when return 403
  forbiddenMessage: 'No Privilege'
})

fastify.get(
  '/',
  {
    config: {
      rbac: {
        // specify roles for this route
        roles: ['index:read'],
        // skip rbac check at early stage even if roles is specified
        skip: false,
        // route base rbac check
        checkRBAC(routeRoles, accountRoles) {
          return true // must return boolean or promise boolean
        },
      }
    }
  }
)

Decorators

// Map of route and roles
fastify.rbac.routeRBAC
// Map {
//  GET:/ => ['index:read']
// }

// Array of all roles
fastify.rbac.roles
// ['index:read']