# HG changeset patch # User Matthew Wild # Date 1701366687 0 # Node ID b4607c5dfcac8c6d98aa2dc3b4b7083ddd9c7a42 # Parent 9944c6c3e914414374c96069d440883fdf2d70b0 mod_audit_register: Support for deregister and enable/disable events diff -r 9944c6c3e914 -r b4607c5dfcac mod_audit_register/mod_audit_register.lua --- a/mod_audit_register/mod_audit_register.lua Wed Nov 29 12:14:49 2023 +0000 +++ b/mod_audit_register/mod_audit_register.lua Thu Nov 30 17:51:27 2023 +0000 @@ -1,24 +1,53 @@ module:depends("audit"); -- luacheck: read globals module.audit +local dt = require "util.datetime"; local jid = require "util.jid"; local st = require "util.stanza"; -module:hook("user-registered", function(event) - local session = event.session; - local custom = {}; +local function audit_basic_event(name, custom_handler) + module:hook(name, function (event) + local custom; + if custom_handler then + custom = custom_handler(event); + end + module:audit(jid.join(event.username, module.host), name, { + session = event.session; + custom = custom; + }); + end); +end + +audit_basic_event("user-registered", function (event) local invite = event.validated_invite or (event.session and event.session.validated_invite); - if invite then - table.insert(custom, st.stanza( + if not invite then return; end + return { + st.stanza( "invite-used", { xmlns = "xmpp:prosody.im/audit", token = invite.token, } - )) + ); + }; +end); + +audit_basic_event("user-deregistered-pending"); +audit_basic_event("user-deregistered"); + +audit_basic_event("user-enabled"); +audit_basic_event("user-disabled", function (event) + local meta = event.meta; + if not meta then return end + + local meta_st = st.stanza("disabled", { + xmlns = "xmpp:prosody.im/audit"; + reason = meta.reason; + when = meta.when and dt.datetime(meta.when) or nil; + }); + if meta.comment then + meta_st:text_tag("comment", meta.comment); end - module:audit(jid.join(event.username, module.host), "user-registered", { - session = session, - custom = custom, - }); + + return { meta_st }; end);