refactor: bind hot_reload event via EventDispatcher, add on_hot_reload to UserPermissions
This commit is contained in:
parent
c949a51f2e
commit
ce7eb2a193
@ -107,4 +107,7 @@ def load_rbac():
|
|||||||
env.invalidate_user_perm_cache = env.userpermissions.invalidate_user_cache
|
env.invalidate_user_perm_cache = env.userpermissions.invalidate_user_cache
|
||||||
env.invalidate_all_perm_caches = env.userpermissions.invalidate_all_user_caches
|
env.invalidate_all_perm_caches = env.userpermissions.invalidate_all_user_caches
|
||||||
env.invalidate_role_perm_cache = env.userpermissions.invalidate_rp_cache
|
env.invalidate_role_perm_cache = env.userpermissions.invalidate_rp_cache
|
||||||
|
# Bind hot_reload event — instance method, WeakMethod safe (stored on env)
|
||||||
|
if hasattr(env, 'event_dispatcher'):
|
||||||
|
env.event_dispatcher.bind('hot_reload', env.userpermissions.on_hot_reload)
|
||||||
register_rbac_event_listeners()
|
register_rbac_event_listeners()
|
||||||
|
|||||||
@ -98,6 +98,11 @@ class UserPermissions:
|
|||||||
# Async lock for rp_caches initialization (lazy init)
|
# Async lock for rp_caches initialization (lazy init)
|
||||||
self._rp_lock = None
|
self._rp_lock = None
|
||||||
|
|
||||||
|
def on_hot_reload(self, data=None):
|
||||||
|
"""Event handler for hot_reload event. Clears all caches."""
|
||||||
|
self.ur_caches.clear()
|
||||||
|
self.invalidate_rp_cache()
|
||||||
|
|
||||||
def on_user_update(self, data):
|
def on_user_update(self, data):
|
||||||
"""Event handler for users table update.
|
"""Event handler for users table update.
|
||||||
Clears the specific user's permission cache.
|
Clears the specific user's permission cache.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user