At present, casbin-cpp provides language bindings for Python, we named it pycasbin.
It is assumed you have CMake >=v3.19 and Python >= 3.6 installed. Current pycasbin only support pip install in local machine.
-
Clone/download the project:
git clone https://github.com/casbin/casbin-cpp.git
-
Update
wheel setuptools:python -m pip install --upgrade wheel setuptools
-
Install the
pycasbinmodule:cd casbin-cpp && pip install --verbose .
Now, you're ready to go!
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 casbinSuppose 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.
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 onIf you've done everything right, you'll see your output without any errors.
