react-use-roles

Simple React Hook and Library for role based rendering

Usage no npm install needed!

<script type="module">
  import reactUseRoles from 'https://cdn.skypack.dev/react-use-roles';
</script>

README

react-use-roles

Simple React Hook and Library for role based rendering

NPM JavaScript Style Guide

Install

npm install --save react-use-roles

OR

yarn add react-use-roles

Usage

import React, { useEffect } from 'react'

import { RoleChecker, RolesProvider, useRoles, isAllowed } from 'react-use-roles'

const App = () => {
    return <RolesProvider>
        <RoleBasedComponent />
    </RolesProvider>
}

export default App

const RoleBasedComponent = () => {
    const { role, setRole, setDefaultTemplate } = useRoles()
    useEffect(() => {
        setRole('admin')
        setDefaultTemplate(<div style={{color: 'blue', fontStyle: 'italic'}}>No Ways!</div>) // OPTIONAL
    }, [])
    return (
        <>
            <RoleChecker allowed={['testers']}>
                <p>Hello 1</p>
            </RoleChecker>
            <RoleChecker allowed={['testers', 'admin']}>
                <p>Hello 2</p>
            </RoleChecker>
            <RoleChecker allowed={['accounts']} template={(<p>You can't access this</p>)}>
                <p>Hello 3</p>
                <p>Hello 3 again</p>
            </RoleChecker>
            <RoleChecker allowed={['testers', 'admin']} mode="includes"> {// IF ROLES MATCHES ANY LISTED ROLE, ACCESS WILL BE GRANTED (DEFAULTS TO INCLUDE IN MODE IS NOT SET)}
                <p>Hello 2</p>
            </RoleChecker>
            <RoleChecker allowed={['testers', 'admin']} mode="none"> {// IF ROLES MATCHES ANY LISTED ROLE, ACCESS WILL BE DENIED}
                <p>Hello 2</p>
            </RoleChecker>
            {isAllowed(role, ['admin']) && <p>Function to checking if this is allowed</p>}
        </p>
    )
}

License

MIT © ap3tt1t