# HG changeset patch
# User Matthew Wild <mwild1@gmail.com>
# Date 1701337620 0
# Node ID 1796370091d4c591f7d9f604693c7bd390289c8b
# Parent  2b8ec22988afcae440415531612448399d80aef8
usermanager, mod_auth_internal_hashed: Support metadata when disabling a user

This allows us to store a time, actor, comment and/or reason why an account
was disabled, which seems a generally useful thing to support.

diff -r 2b8ec22988af -r 1796370091d4 core/usermanager.lua
--- a/core/usermanager.lua	Mon Nov 27 00:14:56 2023 +0100
+++ b/core/usermanager.lua	Thu Nov 30 09:47:00 2023 +0000
@@ -163,12 +163,12 @@
 	return ret, err;
 end
 
-local function disable_user(username, host)
+local function disable_user(username, host, meta)
 	local method = hosts[host].users.disable;
 	if not method then return nil, "method not supported"; end
-	local ret, err = method(username);
+	local ret, err = method(username, meta);
 	if ret then
-		prosody.events.fire_event("user-disabled", { username = username, host = host });
+		prosody.events.fire_event("user-disabled", { username = username, host = host, meta = meta });
 	end
 	return ret, err;
 end
diff -r 2b8ec22988af -r 1796370091d4 plugins/mod_auth_internal_hashed.lua
--- a/plugins/mod_auth_internal_hashed.lua	Mon Nov 27 00:14:56 2023 +0100
+++ b/plugins/mod_auth_internal_hashed.lua	Thu Nov 30 09:47:00 2023 +0000
@@ -126,9 +126,10 @@
 	return accounts:set(username, account);
 end
 
-function provider.disable(username)
+function provider.disable(username, meta)
 	local account = accounts:get(username);
 	account.disabled = true;
+	account.disabled_meta = meta;
 	account.updated = os.time();
 	return accounts:set(username, account);
 end