Mercurial > prosody-modules
comparison mod_audit_register/mod_audit_register.lua @ 5744:b4607c5dfcac
mod_audit_register: Support for deregister and enable/disable events
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 30 Nov 2023 17:51:27 +0000 |
| parents | dde83f6043e6 |
| children |
comparison
equal
deleted
inserted
replaced
| 5743:9944c6c3e914 | 5744:b4607c5dfcac |
|---|---|
| 1 module:depends("audit"); | 1 module:depends("audit"); |
| 2 -- luacheck: read globals module.audit | 2 -- luacheck: read globals module.audit |
| 3 | 3 |
| 4 local dt = require "util.datetime"; | |
| 4 local jid = require "util.jid"; | 5 local jid = require "util.jid"; |
| 5 local st = require "util.stanza"; | 6 local st = require "util.stanza"; |
| 6 | 7 |
| 7 module:hook("user-registered", function(event) | 8 local function audit_basic_event(name, custom_handler) |
| 8 local session = event.session; | 9 module:hook(name, function (event) |
| 9 local custom = {}; | 10 local custom; |
| 11 if custom_handler then | |
| 12 custom = custom_handler(event); | |
| 13 end | |
| 14 module:audit(jid.join(event.username, module.host), name, { | |
| 15 session = event.session; | |
| 16 custom = custom; | |
| 17 }); | |
| 18 end); | |
| 19 end | |
| 20 | |
| 21 audit_basic_event("user-registered", function (event) | |
| 10 local invite = event.validated_invite or (event.session and event.session.validated_invite); | 22 local invite = event.validated_invite or (event.session and event.session.validated_invite); |
| 11 if invite then | 23 if not invite then return; end |
| 12 table.insert(custom, st.stanza( | 24 return { |
| 25 st.stanza( | |
| 13 "invite-used", | 26 "invite-used", |
| 14 { | 27 { |
| 15 xmlns = "xmpp:prosody.im/audit", | 28 xmlns = "xmpp:prosody.im/audit", |
| 16 token = invite.token, | 29 token = invite.token, |
| 17 } | 30 } |
| 18 )) | 31 ); |
| 32 }; | |
| 33 end); | |
| 34 | |
| 35 audit_basic_event("user-deregistered-pending"); | |
| 36 audit_basic_event("user-deregistered"); | |
| 37 | |
| 38 audit_basic_event("user-enabled"); | |
| 39 audit_basic_event("user-disabled", function (event) | |
| 40 local meta = event.meta; | |
| 41 if not meta then return end | |
| 42 | |
| 43 local meta_st = st.stanza("disabled", { | |
| 44 xmlns = "xmpp:prosody.im/audit"; | |
| 45 reason = meta.reason; | |
| 46 when = meta.when and dt.datetime(meta.when) or nil; | |
| 47 }); | |
| 48 if meta.comment then | |
| 49 meta_st:text_tag("comment", meta.comment); | |
| 19 end | 50 end |
| 20 module:audit(jid.join(event.username, module.host), "user-registered", { | 51 |
| 21 session = session, | 52 return { meta_st }; |
| 22 custom = custom, | |
| 23 }); | |
| 24 end); | 53 end); |
