parent
bce1d3c913
commit
cc6691dcb3
35
init.lua
35
init.lua
|
@ -153,23 +153,30 @@ sauth.auth_handler = {
|
|||
end
|
||||
-- If not in authentication table, return nil
|
||||
if not r then return nil end
|
||||
local admin = (name == minetest.setting_get("name"))
|
||||
local privs = {}
|
||||
if singleplayer or admin then
|
||||
-- If admin, grant all privs, if singleplayer
|
||||
-- grant all privs with give_to_singleplayer
|
||||
-- save privs to speed up caching
|
||||
for priv, def in pairs(core.registered_privileges) do
|
||||
if (singleplayer and def.give_to_singleplayer) or admin then
|
||||
privs[priv] = true
|
||||
end
|
||||
end
|
||||
else
|
||||
privs = minetest.string_to_privs(r.privileges)
|
||||
-- Figure out what privileges the player should have.
|
||||
-- Take a copy of the privilege table
|
||||
local privileges = {}
|
||||
for priv, _ in pairs(core.auth_table[name].privileges) do
|
||||
privileges[priv] = true
|
||||
end
|
||||
-- If singleplayer, give all privileges except those marked as give_to_singleplayer = false
|
||||
if core.is_singleplayer() then
|
||||
for priv, def in pairs(core.registered_privileges) do
|
||||
if def.give_to_singleplayer then
|
||||
privileges[priv] = true
|
||||
end
|
||||
end
|
||||
-- For the admin, give everything
|
||||
elseif name == core.settings:get("name") then
|
||||
for priv, def in pairs(core.registered_privileges) do
|
||||
if def.give_to_admin then
|
||||
privileges[priv] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
local record = {
|
||||
password = r.password,
|
||||
privileges = privs,
|
||||
privileges = privileges,
|
||||
last_login = tonumber(r.last_login)
|
||||
}
|
||||
if not auth_table[name] then auth_table[name] = record end
|
||||
|
|
Loading…
Reference in New Issue