npm package: @paraboly/pwc-permission-engine
Description: Web Component Permission Engine via Paraboly
Author: Kuray
Latest version: 0.0.3-rc.7

![Built With Stencil](https://img.shields.io/badge/-Built%20With%20Stencil-16161d.svg?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI%2BCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI%2BCgkuc3Qwe2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU%2BCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MjQuNywzNzMuOWMwLDM3LjYtNTUuMSw2OC42LTkyLjcsNjguNkgxODAuNGMtMzcuOSwwLTkyLjctMzAuNy05Mi43LTY4LjZ2LTMuNmgzMzYuOVYzNzMuOXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTQyNC43LDI5Mi4xSDE4MC40Yy0zNy42LDAtOTIuNy0zMS05Mi43LTY4LjZ2LTMuNkgzMzJjMzcuNiwwLDkyLjcsMzEsOTIuNyw2OC42VjI5Mi4xeiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDI0LjcsMTQxLjdIODcuN3YtMy42YzAtMzcuNiw1NC44LTY4LjYsOTIuNy02OC42SDMzMmMzNy45LDAsOTIuNywzMC43LDkyLjcsNjguNlYxNDEuN3oiLz4KPC9zdmc%2BCg%3D%3D&colorA=16161d&style=for-the-badge)

<img alt="WebComponent PWC Permission Engine" src="assets/logo.png" width="1050"/>

[![Web Component Permission Engine via Paraboly](https://img.shields.io/badge/-Web%20Component%20Permission%20Engine%20via%20Paraboly-lightgrey?style=for-the-badge)](https://github.com/Paraboly/pwc-tooltip)

[![npm version](https://img.shields.io/npm/v/@paraboly/pwc-permission-engine.svg?style=for-the-badge)](https://www.npmjs.com/package/@paraboly/pwc-permission-engine)
[![npm](https://img.shields.io/npm/dt/@paraboly/pwc-permission-engine.svg?style=for-the-badge)](https://www.npmjs.com/package/@paraboly/pwc-permission-engine)
![Platform - Platform Free Web](https://img.shields.io/badge/-Web%20%7C%20Platform%20Free-blue?style=for-the-badge)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)


## Installation

### Script tag

- Put a script tag similar to this `<script	type="module" src="https://unpkg.com/@paraboly/pwc-permission-engine@latest/dist/pwc-permission-engine/pwc-permission-engine.esm.js"></script>` in the head of your index.html
- Then you can use the element anywhere in your template, JSX, html etc

### Node Modules
- Run `npm install @paraboly/pwc-permission-engine --save`
- Put a script tag similar to this `<script src='node_modules/@paraboly/pwc-permission-engine/dist/pwc-permission-engine.js'></script>` in the head of your index.html
- Then you can use the element anywhere in your template, JSX, html etc

### In a stencil-starter app
- Run `npm install @paraboly/pwc-permission-engine --save`
- Add an import to the npm packages `import @paraboly/pwc-permission-engine;`
- Then you can use the element anywhere in your template, JSX, html etc


# Fundamental Architecture

| Value | R   | W   | X   | Description   |
| ----- | --- | --- | --- | ------------- |
| 0     | 0   | 0   | 0   | NO_PERMISSION |
| 1     | 1   | 0   | 0   | READ          |
| 2     | 0   | 1   | 0   | WRITE         |
| 3     | 1   | 1   | 0   | READ/WRITE    |
| 4     | 0   | 0   | 1   | EXECUTE       |
| 5     | 1   | 0   | 1   | READ/EXECUTE  |
| 6     | 0   | 1   | 1   | WRITE/EXECUTE |
| 7     | 1   | 1   | 1   | ALL           |

# Usage

Just call the pwc-permission-engine at the root level of index.html. It will handle the whole project from body to everywhere depends on **pwc-id** tag.

```html
<pwc-permission-engine></pwc-permission-engine>
```

## Handle the edit and delete buttons

If you want to handle the edit and delete buttons, simply set your buttons as pwc-id="edit-button" or pwc-id="delete-button".
If you want to show your edit and delete buttons then you need to set your permission value with the above architecture.
**Edit buttons** should have at least a **"WRITE"** permission and **delete buttons** should have at least **"EXECUTE"** permission.

```html
<button pwc-id="edit-button" />

<button pwc-id="delete-button" />
```

## Authors

FreakyCoder, kuray.ogun@paraboly.com | kurayogun@gmail.com

## License

WebComponent PWC PWC permission-engine is available under the MIT license. See the LICENSE file for more info.