Skip to main content

This is an Adapter for PyCasbin that implemented using Databases connection to achieve async process

Project description

Databases Casbin Adapter

GitHub Actions Coverage Status Version PyPI - Wheel Pyversions Download License

This is an Adapter for PyCasbin that implemented using Databases connection to achieve async process

Installation

pip install casbin_databases_adapter

Simple Example

import casbin_databases_adapter
import casbin
from databases import Database
import sqlalchemy
from sqlalchemy import Table, Column, String, Integer
from sqlalchemy.sql.ddl import CreateTable
import asyncio

DATABASE_URL = "sqlite+aiosqlite:///example.db"

async def create_casbin_rule_table(db: Database):
    metadata = sqlalchemy.MetaData()
    table = Table(
        "casbin_rules",
        metadata,
        Column("id", Integer, primary_key=True),
        Column("ptype", String(255)),
        Column("v0", String(255)),
        Column("v1", String(255)),
        Column("v2", String(255)),
        Column("v3", String(255)),
        Column("v4", String(255)),
        Column("v5", String(255)),
    )
    q = CreateTable(table)
    await db.execute(query=str(q))
    return table

async def main():
    database = Database(DATABASE_URL)
    await database.connect()
    casbin_rule_table = await create_casbin_rule_table(database)
    adapter = casbin_databases_adapter.DatabasesAdapter(db=database, table=casbin_rule_table)
    
    e = casbin.Enforcer('path/to/model.conf', adapter)
    
    sub = "alice"  # the user that wants to access a resource.
    obj = "data1"  # the resource that is going to be accessed.
    act = "read"  # the operation that the user performs on the resource.
    
    if e.enforce(sub, obj, act):
        # permit alice to read data1
        pass
    else:
        # deny the request, show an error
        pass

# run the main function
asyncio.run(main())

Getting Help

License

This project is licensed under the Apache 2.0 license.

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

casbin_databases_adapter-1.2.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

casbin_databases_adapter-1.2.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file casbin_databases_adapter-1.2.0.tar.gz.

File metadata

File hashes

Hashes for casbin_databases_adapter-1.2.0.tar.gz
Algorithm Hash digest
SHA256 583469c2d1aca5639265b008102eed586e6efb1ae958c1d6755e2810fa99de76
MD5 a9fb7bc5a73c1a6563dce5abb97b36b8
BLAKE2b-256 2309ab4153d5cb944f19312df65199e7bb6ec848e4846abfa26a4061387c99fa

See more details on using hashes here.

File details

Details for the file casbin_databases_adapter-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for casbin_databases_adapter-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 60bdc17e2c98b35e9fc7a581e8354f2da075ac0d8a569017720e77182a5c9626
MD5 bff1df86e499c616250a48f8d2179b9c
BLAKE2b-256 ceb71b9fa693be081129b2f8aebe495b12fd8e1d219b42f2ca94c584ee23a5ff

See more details on using hashes here.

Supported by

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