react-rbac-lib
Version:
A tiny useful library to integrate role based access control for react (Typescript)
117 lines (99 loc) • 4.04 kB
Markdown
[![npm install][install-img]][npm-url]
<br>
[![npm version][npm-version]][npm-url]
[![license][license-url]][npm-url]
[![Known Vulnerabilities][vulner-url]][npm-url]
[![Library][tiny-lib]][npm-url]
A tiny useful library to integrate role based access control for react (Typescript)
Installation
------------
To use in your projects:
```sh
npm install react-rbac-lib --save
```
Usage
-----
```ts
import RBAC from "react-rbac-lib";
import _ from "lodash";
let userData: any;
try {
const localStorageUserData: any = localStorage.getItem("user");
userData = JSON.parse(localStorageUserData || "{}");
} catch (error)
const abilities = RBAC.hasAccessFor("member", _.get(userData, "data.role", {})
//eg.Method for user access check
const checkUsrAccess = () => {
return (
abilities.can('create', 'userRoleManagement.userAccessPermissions.roleAccess_1') || //returns true
abilities.can('view', 'userRoleManagement.userAccessPermissions.roleAccess_1') || //returns false
abilities.can('update', 'userRoleManagement.userAccessPermissions.roleAccess_1') || //returns true
abilities.can('delete', 'userRoleManagement.userAccessPermissions.roleAccess_1') || //returns false
abilities.can('create', 'userRoleManagement.userAccessPermissions.roleAccess_2') || //returns false
abilities.can('edit', 'userRoleManagement.userAccessPermissions.roleAccess_2') //returns false
);
};
return (
checkUsrAccess() && (<ComponentsAccordingToTheUserAccess/>)
);
```
Sample json data
```json
{
"data": {
".....": {
.....
.....
},
"role": {
"isSuperAdminPermission": false, // [true - overrides role checks to true.]
// [false - checks individual role permissions]
"userRoleManagement": {
"userAccessPermissions": {
"roleAccess_1": {
"create": true,
"view": false,
"update": true,
"delete": false,
},
"roleAccess_2": {
"create": false,
"edit": false,
......
......
}
},
........
........
},
...........
...........
}
},
}
```
Author
------
[**Sreekanth T U**](https://moistrona.in/)
<br/>
[![Follow on Facebook][facebook-follow-img]][facebook-follow-url]
[![Follow on LinkedIn][linkedin-follow-img]][linkedin-follow-url]
[![Follow on Twitter][twitter-follow-img]][twitter-follow-url]
License
-------
MIT License. See [LICENSE.md](LICENSE.md) for details.
[]: https://www.npmjs.com/package/react-rbac-lib
[]: https://img.shields.io/npm/v/react-rbac-lib
[]: https://nodei.co/npm/react-rbac-lib.png?compact=true
[]: https://img.shields.io/npm/l/react-rbac-lib
[]: https://img.shields.io/snyk/vulnerabilities/npm/react-rbac-lib
[]: https://img.shields.io/badge/Tiny%20Lib-rbac%20library-brightgreen
[]: https://twitter.com/Sreekanth_TU
[]: https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Ftwitter.com%2FSreekanth_TU
[]: https://www.facebook.com/sreekanth.tu
[]: https://img.shields.io/badge/FB-Follow-blue
[]: https://www.linkedin.com/in/sreekanth-unnikrishnan-aa15b4111/
[]: https://img.shields.io/badge/in-Follow-informational
[]: https://github.com/Sreekanth-Unnikrishnan
[]: https://img.shields.io/github/followers/Sreekanth-Unnikrishnan?label=follow&style=social