tree: e54e966fbd6828f73daf66a919ddc5a19c88819c [path history] [tgz]
  1. src/
  2. tests/
  3. CMakeLists.txt
  4. README.md
pycasbin/README.md

Language Bindings for casbin-cpp

At present, casbin-cpp provides language bindings for Python, we named it pycasbin.

Python Bindings

Use pip install the pycasbin module

It is assumed you have CMake >=v3.19 and Python >= 3.6 installed. Current pycasbin only support pip install in local machine.

  1. Clone/download the project:

    git clone https://github.com/casbin/casbin-cpp.git
    
  2. Update wheel setuptools:

    python -m pip install --upgrade wheel setuptools
    
  3. Install the pycasbin module:

    cd casbin-cpp && pip install --verbose .
    

Now, you're ready to go!

Usage

It is assumed that you have pycasbin module correctly installed on your system.

First, we import the pycasbin module to a python source file:

import pycasbin as casbin

Suppose we want a function to check authorization of a request:

def isAuthorized(req):
    result = True
    if result:
        print('Authorized')
    else
        print('Not authorized!')

Here, the request can be a list or a dictionary in the forms:

req = ['subject1', 'object1', 'action1'] # and so on..

req = {
    "sub": "subject1",
    "obj": "object1",
    "act": "action1"  # ... and so on
}

We can Enforce this request (or compute the result of this request) through casbin.Enforce(). For that, we need to create a casbin.Enforcer:

e = casbin.Enforcer('path/to/model.conf', 'path/to/policy.csv')

Make sure that the paths are relative to the current python source file or an absolute path.

Apart from the regular Enforcer, you may also use CachedEnforcer depending on your use case.

Incorporating the Enforcer in our example gives us:

def isAuthorized(req):
    result = e.Enforce(req)
    if result:
        print('Authorized')
    else
        print('Not authorized!')

Rest of the method's name is on par with casbin-cpp.

Summary

This sums up the basic usage of pycasbin module:

import pycasbin as casbin

e = casbin.Enforcer('path/to/model.conf', 'path/to/policy.csv')

def isAuthorized(req):
    result = e.Enforce(req)
    if result:
        print('Authorized')
    else
        print('Not authorized!')

isAuthorized(['subject1', 'object1', 'action1'])
isAuthorized(['subject2', 'object2', 'action2'])
# ... and so on

If you‘ve done everything right, you’ll see your output without any errors.