npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

accessify-react-rbac

v0.0.5

Published

Welcome to Accessify RBAC React Package! 🎉 Simplify RBAC implementation in your React applications with pre-built hooks and functions. This utility package follows a pessimistic approach, focusing on a bottom-up model for seamless integration.

Downloads

16

Readme

Accessify RBAC React Package

Welcome to Accessify RBAC React Package! 🎉 Simplify RBAC implementation in your React applications with pre-built hooks and functions. This utility package follows a pessimistic approach, focusing on a bottom-up model for seamless integration.

Overview

  • Entities:

    • Define three fundamental entities: Roles, Actions, and Resources.
    • Tailor these entities to suit your application's business needs and architecture.
  • Permission Matrix:

    • Generate a JSON-based permission matrix to map actions to resources for each role.
    • Leverage the Accessify Permission Generator for easy matrix creation.

How to Use

1. Install the Package

npm install accessify-rbac-react

or

yarn add accessify-rbac-react

2. Wrap Your Application

In the root of your project, import PermissionProvider and wrap your application.

import { PermissionProvider } from 'accessify-react-rbac'

function App() {
  return (
    <PermissionProvider>
      <AppRoutes /> {/* Your application modules/routes */}
    </PermissionProvider>
  )
}

3. Set Role and Permissions

Set the user role in the global context when the user logs in.

import { usePermissions } from 'accessify-react-rbac'

const Login = () => {
  const { setUserRole } = usePermissions()

  const handleLogin = async () => {
    const data = await axios.post('/login', payload)
    setUserRole(data.role)
  }

  // Further component logic
}

4. Set Permissions Using JSON

Set permissions globally by providing the Permissions JSON in the following format:

{
  "ROLE_NAME": [
    {
      "resource": "RESOURCE_NAME",
      "action": ["ACTION_1", "ACTION_2"]
    }
    // Additional resource-action mappings for the role
  ]
  // Permissions for other roles
}
import { usePermissions } from 'accessify-react-rbac'

const Profile = () => {
  const { setPermissions } = usePermissions()

  const initializePermissions = async () => {
    const data = Constants.PERMISSIONS_JSON
    setPermissions(data)
  }

  // Further component logic
}

5. Leverage RBAC Hooks and Components

useCanAccess Hook

Use this utility hook to conditionally render components based on resource and action.

import { useCanAccess } from 'accessify-react-rbac'

const Orders = () => {
  const { canAccess } = useCanAccess({ action: 'READ', resource: 'ORDERS' })

  return <>{canAccess ? <OrdersListing /> : <p>You don't have access to view orders</p>}</>
}

CanAccess Component

Use this component to conditionally render children based on resource and action.

import { CanAccess } from 'accessify-react-rbac'

const Products = () => {
  return (
    <>
      <Header>
        <CanAccess resource="PRODUCT" action="ADD">
          <Button>Add Product</Button>
        </CanAccess>
      </Header>
      <ProductsListing />
    </>
  )
}

Accessify Permission Generator

For creating Permission Matrix JSON, use the Accessify Permission Generator web application. It simplifies the process of defining roles, actions, and resources, and generates a matrix for each role.

Happy coding with Accessify RBAC React Package! 🚀