diff options
author | Kim Alvefur <zash@zash.se> | 2021-11-04 01:00:06 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2021-11-04 01:00:06 +0100 |
commit | ca08584d742a8bca8c93547d189529752a8cc23d (patch) | |
tree | 1391a74a6be81d55d38ff6e91807d0e1a73c76a2 | |
parent | mod_pep: Prevent creation of services for non-existent users (diff) | |
download | prosody-ca08584d742a8bca8c93547d189529752a8cc23d.tar.xz prosody-ca08584d742a8bca8c93547d189529752a8cc23d.zip |
mod_pep: Wipe pubsub service on user deletion0.11.11
Data is already wiped from storage, but this ensures everything is
properly unsubscribed, possibly with notifications etc.
Clears recipient cache as well, since it is no longer relevant.
-rw-r--r-- | plugins/mod_pep.lua | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/plugins/mod_pep.lua b/plugins/mod_pep.lua index a96bb1aa0..4ee3db5eb 100644 --- a/plugins/mod_pep.lua +++ b/plugins/mod_pep.lua @@ -467,3 +467,18 @@ module:hook("account-disco-items", function(event) reply:tag("item", { jid = user_bare, node = node, name = node_obj.config.title }):up(); end end); + +module:hook_global("user-deleted", function(event) + if event.host ~= host then return end + local username = event.username; + local service = services[username]; + if not service then return end + for node in pairs(service.nodes) do service:delete(node, true); end + + local item = pep_service_items[username]; + pep_service_items[username] = nil; + if item then module:remove_item("pep-service", item); end + + recipients[username] = nil; +end); + |