--- 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);