Skip to main content

Role-based access control (RBAC) and permission management extension for oauth2fast-fastapi

Project description

permissions2fast-fastapi

🔒 Role-Based Access Control (RBAC) extension for oauth2fast-fastapi.

Easily manage user roles and permissions in your FastAPI application with support for Multi-Tenancy and High-Performance Redis Caching.

Features

  • 👥 Role Management: Create, assign, and manage roles for users.
  • 🔑 Granular Permissions: Define specific permissions and assign them to roles or directly to users (polymorphic assignments).
  • 🏢 Multi-Tenancy (Optional): Isolate roles and permissions per tenant context.
  • Redis Caching (Optional): High-performance permission evaluation using Redis to minimize database lookups.
  • �🛡️ Route Protection: Dependencies to protect endpoints based on roles or permissions.
  • Async Support: Fully async database interactions via pgsqlasync2fast-fastapi.
  • 🔌 Seamless Integration: Built to extend oauth2fast-fastapi.

Installation

pip install permissions2fast-fastapi

Configuration

This package uses the same database connection logic as oauth2fast-fastapi. Configure your environment variables in .env.

Basic Settings

# Database Configuration
DB_CONNECTIONS__AUTH__USERNAME=db_user
DB_CONNECTIONS__AUTH__PASSWORD=db_password
DB_CONNECTIONS__AUTH__HOST=localhost
DB_CONNECTIONS__AUTH__DATABASE=db_name
DB_CONNECTIONS__AUTH__PORT=5432

Advanced Features (Multi-Tenancy & Redis)

You can enable multi-tenancy and Redis caching by setting the following environment variables:

PERMISSIONS_ENABLE_TENANCY=True
PERMISSIONS_REDIS_RBAC_ENABLED=True

# Redis connection details (if caching is enabled)
PERMISSIONS_REDIS__HOST=localhost
PERMISSIONS_REDIS__PORT=6379
PERMISSIONS_REDIS__DB=0
# PERMISSIONS_REDIS__PASSWORD=your_redis_password

Usage

1. Basic Integration

from fastapi import FastAPI
from permissions2fast_fastapi import permissions_router, roles_router
from oauth2fast_fastapi import router as auth_router

app = FastAPI()

app.include_router(auth_router)
app.include_router(permissions_router)
app.include_router(roles_router)

2. Protecting Routes

Use the provided dependencies to restrict access to endpoints. The system will automatically check Redis cache if enabled, and fallback to database queries if needed. Tenant context is automatically respected if Tenancy is enabled and a Tenant ID is injected in the request context.

from fastapi import Depends
from permissions2fast_fastapi.dependencies import has_permission, has_role
from oauth2fast_fastapi.models import User

# Require a specific role
@app.get("/admin-dashboard")
async def admin_dashboard(user: User = Depends(has_role("admin"))):
    return {"message": "Welcome Admin"}

# Require a specific permission
@app.get("/edit-post")
async def edit_post(user: User = Depends(has_permission("posts.edit"))):
    return {"message": "You can edit posts"}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

permissions2fast_fastapi-0.1.1.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

permissions2fast_fastapi-0.1.1-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file permissions2fast_fastapi-0.1.1.tar.gz.

File metadata

  • Download URL: permissions2fast_fastapi-0.1.1.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for permissions2fast_fastapi-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3572f63e0c77fc4a8935ca856471c2e4023257f0bacfdc37ee18a6f0c49b5dbc
MD5 dbe42ff8c9f6ed7e82a1ab1b3c450bb7
BLAKE2b-256 ec23c6ee660fe53d6817ed7b00866a39ce6ac6ab0473ece1fd0624b6a55048f8

See more details on using hashes here.

File details

Details for the file permissions2fast_fastapi-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for permissions2fast_fastapi-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c9597197d00ea66e88de61c39081529b06164d592ffd3a6a2f8996d65c973d7c
MD5 7d88c8b3bdd85b9db2c13e1b2f9aca99
BLAKE2b-256 de3b5a51cc8c876ff1b9368495b07d9f0207618b62a47c9165cffea2ec692e80

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page