casbin-databases-adapter


Namecasbin-databases-adapter JSON
Version 1.2.0 PyPI version JSON
download
home_pagehttps://github.com/pycasbin/casbin-databases-adapter
SummaryThis is an Adapter for PyCasbin that implemented using Databases connection to achieve async process
upload_time2024-04-24 12:57:05
maintainerNone
docs_urlNone
authorIsa Setiawan Abdurrazaq
requires_python>=3.3
licenseApache 2.0
keywords casbin asynccasbin async databases casbin-adapter rbac access control abac acl permission
VCS
bugtrack_url
requirements asynccasbin databases SQLAlchemy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Databases Casbin Adapter

[![GitHub Actions](https://github.com/pycasbin/casbin-databases-adapter/workflows/build/badge.svg?branch=master)](https://github.com/pycasbin/casbin-databases-adapter/actions)
[![Coverage Status](https://coveralls.io/repos/github/pycasbin/casbin-databases-adapter/badge.svg?branch=master)](https://coveralls.io/github/pycasbin/casbin-databases-adapter?branch=master)
[![Version](https://img.shields.io/pypi/v/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)
[![PyPI - Wheel](https://img.shields.io/pypi/wheel/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)
[![Pyversions](https://img.shields.io/pypi/pyversions/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)
[![Download](https://img.shields.io/pypi/dm/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)
[![License](https://img.shields.io/pypi/l/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)

This is an Adapter for [PyCasbin](https://github.com/casbin/pycasbin) that implemented using [Databases](https://www.encode.io/databases) connection to achieve async process

## Installation

```
pip install casbin_databases_adapter
```

## Simple Example

```python
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

- [PyCasbin](https://github.com/casbin/pycasbin)

### License

This project is licensed under the [Apache 2.0 license](LICENSE).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pycasbin/casbin-databases-adapter",
    "name": "casbin-databases-adapter",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.3",
    "maintainer_email": null,
    "keywords": "casbin, asynccasbin, async, databases, casbin-adapter, rbac, access control, abac, acl, permission",
    "author": "Isa Setiawan Abdurrazaq",
    "author_email": "isasetiawan@protonmail.com",
    "download_url": "https://files.pythonhosted.org/packages/23/09/ab4153d5cb944f19312df65199e7bb6ec848e4846abfa26a4061387c99fa/casbin_databases_adapter-1.2.0.tar.gz",
    "platform": null,
    "description": "# Databases Casbin Adapter\n\n[![GitHub Actions](https://github.com/pycasbin/casbin-databases-adapter/workflows/build/badge.svg?branch=master)](https://github.com/pycasbin/casbin-databases-adapter/actions)\n[![Coverage Status](https://coveralls.io/repos/github/pycasbin/casbin-databases-adapter/badge.svg?branch=master)](https://coveralls.io/github/pycasbin/casbin-databases-adapter?branch=master)\n[![Version](https://img.shields.io/pypi/v/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)\n[![PyPI - Wheel](https://img.shields.io/pypi/wheel/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)\n[![Pyversions](https://img.shields.io/pypi/pyversions/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)\n[![Download](https://img.shields.io/pypi/dm/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)\n[![License](https://img.shields.io/pypi/l/casbin_databases_adapter.svg)](https://pypi.org/project/casbin_databases_adapter/)\n\nThis is an Adapter for [PyCasbin](https://github.com/casbin/pycasbin) that implemented using [Databases](https://www.encode.io/databases) connection to achieve async process\n\n## Installation\n\n```\npip install casbin_databases_adapter\n```\n\n## Simple Example\n\n```python\nimport casbin_databases_adapter\nimport casbin\nfrom databases import Database\nimport sqlalchemy\nfrom sqlalchemy import Table, Column, String, Integer\nfrom sqlalchemy.sql.ddl import CreateTable\nimport asyncio\n\nDATABASE_URL = \"sqlite+aiosqlite:///example.db\"\n\nasync def create_casbin_rule_table(db: Database):\n    metadata = sqlalchemy.MetaData()\n    table = Table(\n        \"casbin_rules\",\n        metadata,\n        Column(\"id\", Integer, primary_key=True),\n        Column(\"ptype\", String(255)),\n        Column(\"v0\", String(255)),\n        Column(\"v1\", String(255)),\n        Column(\"v2\", String(255)),\n        Column(\"v3\", String(255)),\n        Column(\"v4\", String(255)),\n        Column(\"v5\", String(255)),\n    )\n    q = CreateTable(table)\n    await db.execute(query=str(q))\n    return table\n\nasync def main():\n    database = Database(DATABASE_URL)\n    await database.connect()\n    casbin_rule_table = await create_casbin_rule_table(database)\n    adapter = casbin_databases_adapter.DatabasesAdapter(db=database, table=casbin_rule_table)\n    \n    e = casbin.Enforcer('path/to/model.conf', adapter)\n    \n    sub = \"alice\"  # the user that wants to access a resource.\n    obj = \"data1\"  # the resource that is going to be accessed.\n    act = \"read\"  # the operation that the user performs on the resource.\n    \n    if e.enforce(sub, obj, act):\n        # permit alice to read data1\n        pass\n    else:\n        # deny the request, show an error\n        pass\n\n# run the main function\nasyncio.run(main())\n```\n\n### Getting Help\n\n- [PyCasbin](https://github.com/casbin/pycasbin)\n\n### License\n\nThis project is licensed under the [Apache 2.0 license](LICENSE).\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "This is an Adapter for PyCasbin that implemented using Databases connection to achieve async process",
    "version": "1.2.0",
    "project_urls": {
        "Homepage": "https://github.com/pycasbin/casbin-databases-adapter"
    },
    "split_keywords": [
        "casbin",
        " asynccasbin",
        " async",
        " databases",
        " casbin-adapter",
        " rbac",
        " access control",
        " abac",
        " acl",
        " permission"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ceb71b9fa693be081129b2f8aebe495b12fd8e1d219b42f2ca94c584ee23a5ff",
                "md5": "bff1df86e499c616250a48f8d2179b9c",
                "sha256": "60bdc17e2c98b35e9fc7a581e8354f2da075ac0d8a569017720e77182a5c9626"
            },
            "downloads": -1,
            "filename": "casbin_databases_adapter-1.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bff1df86e499c616250a48f8d2179b9c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.3",
            "size": 7991,
            "upload_time": "2024-04-24T12:57:04",
            "upload_time_iso_8601": "2024-04-24T12:57:04.346419Z",
            "url": "https://files.pythonhosted.org/packages/ce/b7/1b9fa693be081129b2f8aebe495b12fd8e1d219b42f2ca94c584ee23a5ff/casbin_databases_adapter-1.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2309ab4153d5cb944f19312df65199e7bb6ec848e4846abfa26a4061387c99fa",
                "md5": "a9fb7bc5a73c1a6563dce5abb97b36b8",
                "sha256": "583469c2d1aca5639265b008102eed586e6efb1ae958c1d6755e2810fa99de76"
            },
            "downloads": -1,
            "filename": "casbin_databases_adapter-1.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a9fb7bc5a73c1a6563dce5abb97b36b8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.3",
            "size": 8261,
            "upload_time": "2024-04-24T12:57:05",
            "upload_time_iso_8601": "2024-04-24T12:57:05.899609Z",
            "url": "https://files.pythonhosted.org/packages/23/09/ab4153d5cb944f19312df65199e7bb6ec848e4846abfa26a4061387c99fa/casbin_databases_adapter-1.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-24 12:57:05",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pycasbin",
    "github_project": "casbin-databases-adapter",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "asynccasbin",
            "specs": [
                [
                    "==",
                    "1.1.7"
                ]
            ]
        },
        {
            "name": "databases",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "SQLAlchemy",
            "specs": [
                [
                    "==",
                    "1.4.42"
                ]
            ]
        }
    ],
    "lcname": "casbin-databases-adapter"
}
        
Elapsed time: 0.26966s