@@ -16,6 +16,60 @@ This is an Adapter for [PyCasbin](https://github.com/casbin/pycasbin) that imple
16
16
pip install casbin_databases_adapter
17
17
```
18
18
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
+
19
73
### Getting Help
20
74
21
75
- [ PyCasbin] ( https://github.com/casbin/pycasbin )
0 commit comments