ormar Adapter is the ormar adapter for PyCasbin. With this library, Casbin can load policy from ormar supported database or save policy to it.
Based on Officially Supported Databases, The current supported databases are:
- PostgreSQL
- MySQL
- SQLite
pip install ormar_casbin_adapter
or
poetry add ormar-casbin-adapter
import casbin
import databases
import ormar
from ormar_casbin_adapter import DatabasesAdapter
import sqlalchemy
database = Database("sqlite://", force_rollback=True)
metadata = sqlalchemy.MetaData()
class CasbinRule(ormar.Model):
class Meta:
database = database
metadata = metadata
tablename = "casbin_rules"
id: int = ormar.Integer(primary_key=True)
ptype: str = ormar.String(max_length=255)
v0: str = ormar.String(max_length=255)
v1: str = ormar.String(max_length=255)
v2: str = ormar.String(max_length=255, nullable=True)
v3: str = ormar.String(max_length=255, nullable=True)
v4: str = ormar.String(max_length=255, nullable=True)
v5: str = ormar.String(max_length=255, nullable=True)
adapter = DatabasesAdapter(model=CasbinRule)
e = casbin.Enforcer("path/to/model.conf", adapter, True)
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 data1ormar_casbin_adapter
pass
else:
# deny the request, show an error
pass
This project is licensed under the Apache 2.0 license.