Skip to main content

Async Redis Adapter for PyCasbin

Project description

Async Redis Adapter for PyCasbin

GitHub Actions Coverage Status Version PyPI - Wheel Pyversions Download License

Async Redis Adapter is the async redis adapter for PyCasbin. With this library, Casbin can load policy from redis or save policy to it.

Installation

pip install casbin_async_redis_adapter

Simple Example

import asyncio
from casbin_async_redis_adapter import Adapter
import casbin


async def get_enforcer():
    adapter = Adapter("localhost", 6379, encoding="utf-8")
    e = casbin.AsyncEnforcer("rbac_model.conf", adapter)
    model = e.get_model()

    model.clear_policy()
    model.add_policy("p", "p", ["alice", "data1", "read"])
    await adapter.save_policy(model)

    model.clear_policy()
    model.add_policy("p", "p", ["bob", "data2", "write"])
    await adapter.save_policy(model)

    model.clear_policy()
    model.add_policy("p", "p", ["data2_admin", "data2", "read"])
    await adapter.save_policy(model)

    model.clear_policy()
    model.add_policy("p", "p", ["data2_admin", "data2", "write"])
    await adapter.save_policy(model)

    model.clear_policy()
    model.add_policy("g", "g", ["alice", "data2_admin"])
    await adapter.save_policy(model)

    e = casbin.AsyncEnforcer("rbac_model.conf", adapter)
    await e.load_policy()

    return e


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.


async def main():
    e = await get_enforcer()
    if e.enforce("alice", "data1", "read"):
        print("alice can read data1")
    else:
        print("alice can not read data1")


asyncio.run(main())

Configuration

Adapter() enable decode_responses by default and supports any Redis parameter configuration.

To use casbin_redis_adapter, you must provide the following parameter configuration

  • host: address of the redis service
  • port: redis service port

The following parameters are provided by default

  • db: redis database, default is 0
  • username: redis username, default is None
  • password: redis password, default is None
  • key: casbin rule to store key, default is casbin_rules

For more parameters, please follow redis-py

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_async_redis_adapter-1.0.1.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file casbin_async_redis_adapter-1.0.1.tar.gz.

File metadata

File hashes

Hashes for casbin_async_redis_adapter-1.0.1.tar.gz
Algorithm Hash digest
SHA256 5852ea270417f32b142ec879dc76522f5ba9d7f07ab6b8874304c994bea66243
MD5 06a88356cefb3e3ccad16f4cfc237c27
BLAKE2b-256 b256793d9c2ef32f756f7728e318d4e4cac469d0383c2f2078d4eae1ad7b7093

See more details on using hashes here.

File details

Details for the file casbin_async_redis_adapter-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for casbin_async_redis_adapter-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1b420960e4b054bc6e2561ba93d592de4ec1014ccf887942ced7f57b8beb7eb
MD5 029225a651345be348b9c88a73ac94f7
BLAKE2b-256 e8b40d4dbe1dbcf9f22e5611c9bc038877d528348142dce3ccd72a173aed73f7

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