diff mod_audit_user_accounts/mod_audit_user_accounts.lua @ 5745:628952e4ff47

mod_audit_user_accounts: Renamed from mod_audit_register
author Matthew Wild <mwild1@gmail.com>
date Thu, 30 Nov 2023 17:59:08 +0000
parents mod_audit_register/mod_audit_register.lua@b4607c5dfcac
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_audit_user_accounts/mod_audit_user_accounts.lua	Thu Nov 30 17:59:08 2023 +0000
@@ -0,0 +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";
+
+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 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
+
+	return { meta_st };
+end);