From 1c8614ac9ad591f8025712deae26b572cdede50d Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sun, 24 Apr 2022 21:08:33 +0200 Subject: [PATCH] Builtin: Allow to revoke unknown privileges --- builtin/game/chat.lua | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/builtin/game/chat.lua b/builtin/game/chat.lua index 78d6bef98..c4fb6314e 100644 --- a/builtin/game/chat.lua +++ b/builtin/game/chat.lua @@ -310,12 +310,7 @@ local function handle_revoke_command(caller, revokename, revokeprivstr) and revokename == core.settings:get("name") and revokename ~= "" if revokeprivstr == "all" then - revokeprivs = privs - privs = {} - else - for priv, _ in pairs(revokeprivs) do - privs[priv] = nil - end + revokeprivs = table.copy(privs) end local privs_unknown = "" @@ -332,7 +327,10 @@ local function handle_revoke_command(caller, revokename, revokeprivstr) end local def = core.registered_privileges[priv] if not def then - privs_unknown = privs_unknown .. S("Unknown privilege: @1", priv) .. "\n" + -- Old/removed privileges might still be granted to certain players + if not privs[priv] then + privs_unknown = privs_unknown .. S("Unknown privilege: @1", priv) .. "\n" + end elseif is_singleplayer and def.give_to_singleplayer then irrevokable[priv] = true elseif is_admin and def.give_to_admin then @@ -359,19 +357,22 @@ local function handle_revoke_command(caller, revokename, revokeprivstr) end local revokecount = 0 + for priv, _ in pairs(revokeprivs) do + privs[priv] = nil + revokecount = revokecount + 1 + end + + if revokecount == 0 then + return false, S("No privileges were revoked.") + end core.set_player_privs(revokename, privs) for priv, _ in pairs(revokeprivs) do -- call the on_revoke callbacks core.run_priv_callbacks(revokename, priv, caller, "revoke") - revokecount = revokecount + 1 end local new_privs = core.get_player_privs(revokename) - if revokecount == 0 then - return false, S("No privileges were revoked.") - end - core.log("action", caller..' revoked (' ..core.privs_to_string(revokeprivs, ', ') ..') privileges from '..revokename)