@@ -16,6 +16,60 @@ This is an Adapter for [PyCasbin](https://github.com/casbin/pycasbin) that imple
1616pip install casbin_databases_adapter
1717```
1818
19+ ## Simple Example
20+
21+ ``` python
22+ import casbin_databases_adapter
23+ import casbin
24+ from databases import Database
25+ import sqlalchemy
26+ from sqlalchemy import Table, Column, String, Integer
27+ from sqlalchemy.sql.ddl import CreateTable
28+ import asyncio
29+
30+ DATABASE_URL = " sqlite+aiosqlite:///example.db"
31+
32+ async def create_casbin_rule_table (db : Database):
33+ metadata = sqlalchemy.MetaData()
34+ table = Table(
35+ " casbin_rules" ,
36+ metadata,
37+ Column(" id" , Integer, primary_key = True ),
38+ Column(" ptype" , String(255 )),
39+ Column(" v0" , String(255 )),
40+ Column(" v1" , String(255 )),
41+ Column(" v2" , String(255 )),
42+ Column(" v3" , String(255 )),
43+ Column(" v4" , String(255 )),
44+ Column(" v5" , String(255 )),
45+ )
46+ q = CreateTable(table)
47+ await db.execute(query = str (q))
48+ return table
49+
50+ async def main ():
51+ database = Database(DATABASE_URL )
52+ await database.connect()
53+ casbin_rule_table = await create_casbin_rule_table(database)
54+ adapter = casbin_databases_adapter.DatabasesAdapter(db = database, table = casbin_rule_table)
55+
56+ e = casbin.Enforcer(' path/to/model.conf' , adapter)
57+
58+ sub = " alice" # the user that wants to access a resource.
59+ obj = " data1" # the resource that is going to be accessed.
60+ act = " read" # the operation that the user performs on the resource.
61+
62+ if e.enforce(sub, obj, act):
63+ # permit alice to read data1
64+ pass
65+ else :
66+ # deny the request, show an error
67+ pass
68+
69+ # run the main function
70+ asyncio.run(main())
71+ ```
72+
1973### Getting Help
2074
2175- [ PyCasbin] ( https://github.com/casbin/pycasbin )
0 commit comments