refactor: bind hot_reload event via EventDispatcher, add on_hot_reload to UserPermissions

This commit is contained in:
yumoqing 2026-06-01 18:10:29 +08:00
parent c949a51f2e
commit ce7eb2a193
2 changed files with 8 additions and 0 deletions

View File

@ -107,4 +107,7 @@ def load_rbac():
env.invalidate_user_perm_cache = env.userpermissions.invalidate_user_cache
env.invalidate_all_perm_caches = env.userpermissions.invalidate_all_user_caches
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()

View File

@ -98,6 +98,11 @@ class UserPermissions:
# Async lock for rp_caches initialization (lazy init)
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):
"""Event handler for users table update.
Clears the specific user's permission cache.