Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fabiulous/react-redux-permissions

A permissions library for react and redux applications.
https://github.com/fabiulous/react-redux-permissions

permissions react react-native redux

Last synced: 15 days ago
JSON representation

A permissions library for react and redux applications.

Awesome Lists containing this project

README

        

**react-redux-permissions** is a simple library to handle your react application permissions using redux.

## Installation

```
npm i react-redux-permissions --save
```

or

```
yarn add react-redux-permissions
```

## Features

* Disable views and components
* Provide a fallback component for users without permission
* Designed for react-redux
* High Order Component option

## Requirements

* node >= 4.0.0

## Usage

### Reducer

Import the reducer and pass it to your store:

``` javascript
import { createStore, combineReducers } from 'redux';

import { reducer as permissions } from "react-redux-permissions"

export function configureStore(initialState = {}) {
return createStore(
combineReducers({
permissions
}),
initialState
);
}
```
### Actions
Add roles to the current user:

```javascript
import { add } from "react-redux-permissions"

dispatch(add("manager"))
dispatch(add("canSeeMessages")) // Pretty much anything
```
Remove roles from the current user:

```javascript
import { remove } from "react-redux-permissions"

dispatch(remove("canSeeMessages"))
```

Remove all roles. Useful once you logout.
```javascript
import { clear } from "react-redux-permissions"

dispatch(clear())
```

### Component

You can limit access to your views using the default Permissions component.

#### allowed
With the `allowed` prop, only users with one of the permissions will be able to see child components.
```javascript
import Permissions from "react-redux-permissions"

...

```
#### except
With the `except` prop, every user except the ones with the passed permission will be able to see child components.
```javascript
import Permissions from "react-redux-permissions"

...

```

#### fallbackElement
You can send a `fallbackElement` to show an alternative view for users without permission
```javascript
import Permissions from "react-redux-permissions"

...

}
>

```

### HOC
You can also use a High Order Component to disable views and components:

Send allowed roles as the first argument and disallowed as the second argument.
You can also provide a fallback component as second argument of the second function.
```javascript
import { HOC as Permissions } from "react-redux-permissions"

const DashboardView = Permissions(
["admin", "paying"],
["trial"]
)(Dashboard, )

...

```

Avoid using it like:
```javascript
import { HOC as Permissions } from "react-redux-permissions"

const DashboardView = Permissions(["admin", "paying"], ["trial"])

...
render() {
return (
...
)} />
...
)
}
```
This approach inside render will make react mount the component again and cause undesired effects.

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/shizpi/react-redux-permissions. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.

## License

The module is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).