chore(release): 1.1.1 [skip ci] ## [1.1.1](https://github.com/pycasbin/postgresql-watcher/compare/v1.1.0...v1.1.1) (2024-07-16) ### Bug Fixes * fixed `should_reload` behaviour, close PostgreSQL connections, block until `PostgresqlWatcher` is ready, refactorings ([#29](https://github.com/pycasbin/postgresql-watcher/issues/29)) ([8382db4](https://github.com/pycasbin/postgresql-watcher/commit/8382db4d25825c4d2637dfd68a468dfc4828ae35))
Casbin watcher based on PostgreSQL for monitoring updates to casbin policies.
pip install casbin-postgresql-watcher
from flask_authz import CasbinEnforcer from postgresql_watcher import PostgresqlWatcher from flask import Flask from casbin.persist.adapters import FileAdapter casbin_enforcer = CasbinEnforcer(app, adapter) watcher = PostgresqlWatcher(host=HOST, port=PORT, user=USER, password=PASSWORD, dbname=DBNAME) watcher.set_update_callback(casbin_enforcer.load_policy) casbin_enforcer.set_watcher(watcher) # Call should_reload before every call of enforce to make sure # the policy is update to date watcher.should_reload() if casbin_enforcer.enforce("alice", "data1", "read"): # permit alice to read data1 pass else: # deny the request, show an error pass
alternatively, if you need more control
from flask_authz import CasbinEnforcer from postgresql_watcher import PostgresqlWatcher from flask import Flask from casbin.persist.adapters import FileAdapter casbin_enforcer = CasbinEnforcer(app, adapter) watcher = PostgresqlWatcher(host=HOST, port=PORT, user=USER, password=PASSWORD, dbname=DBNAME) casbin_enforcer.set_watcher(watcher) # Call should_reload before every call of enforce to make sure # the policy is update to date if watcher.should_reload(): casbin_enforcer.load_policy() if casbin_enforcer.enforce("alice", "data1", "read"): # permit alice to read data1 pass else: # deny the request, show an error pass
See PostgresQL documentation for full details of SSL parameters.
... watcher = PostgresqlWatcher(host=HOST, port=PORT, user=USER, password=PASSWORD, dbname=DBNAME, sslmode="verify_full", sslcert=SSLCERT, sslrootcert=SSLROOTCERT, sslkey=SSLKEY) ...