š Simple library that supports access control models like ACL, RBAC, ABAC for React Application.
npm install @diaskappassov/casbin-reactš Simple library that supports access control models like ACL, RBAC, ABAC for React Application.
> [!NOTE]
>
> - Changelogs here.
> - Read more about casbin here.
``sh`
npm i @diaskappassov/casbin-react
You can see all usage examples bellow
`tsx
import { createPermissionsScope } from "@diaskappassov/casbin-react";
function getAuth() {
return {
m:
,
p: [
["p", "cat", "walk", "ground"],
["p", "cat", "run", "ground"],
["p", "cat", "swim", "water"],
["p", "cat", "breathe", "air"],
],
};
}export const {
PermissionsCan,
PermissionsCanAll,
PermissionsCanAny,
authorizer,
loadPermissions,
useActionPermissionsInit,
useActionPermissionsReset,
usePermissionsCan,
usePermissionsCanAll,
usePermissionsCanAny,
} = createPermissionsScope({
get: getAuthzPermissions,
});
`$3
Use wrapper component
`tsx
export function App() {
return (
<>
{/ Wrap children /}
rvals={["cat", "run", "ground"]}
childrenOnLoading={"Loading..."}
childrenOnUnavailable={"No cat can't do it :("}
childrenOnUndefined={"Sorry, cant recognize"}
onError={(err) => {
console.error("PermissionsCan: something wen'Ćt wrong", err);
}}
>
Yes cat can run on the ground
{/ Or /}
{/ Use render props pattern /}
rvals={["cat", "run", "ground"]}
render={({ available, loading }) => {
if (loading) return "Loading...";
if (available === true) return "YES";
if (available === false) return "NO";
return "I DONT KNOW";
}}
onError={(err) => {
console.error("PermissionsCan: something went wrong", err);
}}
/>
>
);
}
`Use hook
`tsx
export function App() {
const { available, loading } = usePermissionsCan({
rvals: ["cat", "run", "ground"],
}); if (loading) return "Loading...";
if (available === true) return "YES";
if (available === false) return "NO";
return "I DONT KNOW";
}
``- [ ] Examples
- [ ] Documentation
- [ ] Test
- [ ] Release v1.0.0