forked from Mirrorlandia_minetest/minetest
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:
parent
f2fd443262
commit
8cc04e0cb4
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user