Run on_grant and on_revoke callbacks after privs change (#11387)

Callbacks were run too early. This changes the order to call after the privs are updated.
This commit is contained in:
AFCMS 2021-06-30 20:40:45 +02:00 committed by GitHub
parent f2fd443262
commit 8cc04e0cb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 6 deletions

@ -87,6 +87,10 @@ core.builtin_auth_handler = {
core.settings:get("default_password"))) core.settings:get("default_password")))
end end
auth_entry.privileges = privileges
core_auth.save(auth_entry)
-- Run grant callbacks -- Run grant callbacks
for priv, _ in pairs(privileges) do for priv, _ in pairs(privileges) do
if not auth_entry.privileges[priv] then if not auth_entry.privileges[priv] then
@ -100,9 +104,6 @@ core.builtin_auth_handler = {
core.run_priv_callbacks(name, priv, nil, "revoke") core.run_priv_callbacks(name, priv, nil, "revoke")
end end
end end
auth_entry.privileges = privileges
core_auth.save(auth_entry)
core.notify_authentication_modified(name) core.notify_authentication_modified(name)
end, end,
reload = function() reload = function()

@ -255,11 +255,11 @@ local function handle_grant_command(caller, grantname, grantprivstr)
if privs_unknown ~= "" then if privs_unknown ~= "" then
return false, privs_unknown return false, privs_unknown
end end
core.set_player_privs(grantname, privs)
for priv, _ in pairs(grantprivs) do for priv, _ in pairs(grantprivs) do
-- call the on_grant callbacks -- call the on_grant callbacks
core.run_priv_callbacks(grantname, priv, caller, "grant") core.run_priv_callbacks(grantname, priv, caller, "grant")
end end
core.set_player_privs(grantname, privs)
core.log("action", caller..' granted ('..core.privs_to_string(grantprivs, ', ')..') privileges to '..grantname) core.log("action", caller..' granted ('..core.privs_to_string(grantprivs, ', ')..') privileges to '..grantname)
if grantname ~= caller then if grantname ~= caller then
core.chat_send_player(grantname, core.chat_send_player(grantname,
@ -359,13 +359,13 @@ local function handle_revoke_command(caller, revokename, revokeprivstr)
end end
local revokecount = 0 local revokecount = 0
core.set_player_privs(revokename, privs)
for priv, _ in pairs(revokeprivs) do for priv, _ in pairs(revokeprivs) do
-- call the on_revoke callbacks -- call the on_revoke callbacks
core.run_priv_callbacks(revokename, priv, caller, "revoke") core.run_priv_callbacks(revokename, priv, caller, "revoke")
revokecount = revokecount + 1 revokecount = revokecount + 1
end end
core.set_player_privs(revokename, privs)
local new_privs = core.get_player_privs(revokename) local new_privs = core.get_player_privs(revokename)
if revokecount == 0 then if revokecount == 0 then