Metadata-Version: 2.4
Name: robovai-rbac
Version: 0.1.0
Summary: Enterprise Dynamic Role-Based Access Control (RBAC) & Auth Middleware for Python APIs.
Home-page: https://msalatmani.org
Author: Mohamed Shaban (محمد شعبان العتماني)
Author-email: msalatmani@gmail.com
Project-URL: Homepage, https://msalatmani.org
Project-URL: Source, https://github.com/m0shaban/robovai-rbac
Project-URL: Company, https://robovai.tech
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: pyjwt>=2.4.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# 🔐 robovai-rbac
> **Enterprise Dynamic Role-Based Access Control (RBAC) & Authorization Middleware for Python Web Services.**

[![PyPI](https://img.shields.io/badge/PyPI-robovai--rbac-38bdf8?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/robovai-rbac)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)

---

## 📌 Features
- 🔐 **Dynamic Permission Evaluation**: Grants/revokes permissions without redeploying code.
- 🎟️ **JWT Token Support**: Built-in verification & payload decoding.
- ⚡ **Zero-Overhead Decorators**: Clean `@require_permission('admin:write')` syntax for Flask & FastAPI.

---

## ⚡ Quick Start

```bash
pip install robovai-rbac
```

### Usage Example:

```python
from robovai_rbac import RBACManager, require_permission

rbac = RBACManager(secret_key="your-jwt-secret")

# Register roles and permissions
rbac.add_role("admin", permissions=["users:read", "users:write", "analytics:view"])
rbac.add_role("viewer", permissions=["users:read"])

# Check permission
has_access = rbac.check_permission(role="viewer", permission="users:write")
print(f"Can viewer write? {has_access}")  # False
```

---

## 👤 Author
**Mohamed Shaban (محمد شعبان العتماني)** — Applied AI Engineer  
🌐 Website: [msalatmani.org](https://msalatmani.org) | 📧 Email: msalatmani@gmail.com
