summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-03-31 17:26:44 +0300
committerPerttu Ahola <celeron55@gmail.com>2012-03-31 17:26:44 +0300
commit36c9463467d8381a685742cd57111056a49cae8a (patch)
treef9a8202797e6df98593c48fca930125bec9e7cfd /builtin
parent13159c1a48690d4ede3dbabc7699ea3d49072860 (diff)
downloadminetest-36c9463467d8381a685742cd57111056a49cae8a.tar.gz
minetest-36c9463467d8381a685742cd57111056a49cae8a.tar.bz2
minetest-36c9463467d8381a685742cd57111056a49cae8a.zip
Improve /grant and /revoke output, add /auth_reload
Diffstat (limited to 'builtin')
-rw-r--r--builtin/builtin.lua59
1 files changed, 47 insertions, 12 deletions
diff --git a/builtin/builtin.lua b/builtin/builtin.lua
index 35501787c..2ca5f15a2 100644
--- a/builtin/builtin.lua
+++ b/builtin/builtin.lua
@@ -990,11 +990,7 @@ minetest.register_chatcommand("privs", {
minetest.chat_send_player(name, "Privileges of "..param.." are hidden from you.")
end
end
- privs = {}
- for priv, _ in pairs(minetest.get_player_privs(param)) do
- table.insert(privs, priv)
- end
- minetest.chat_send_player(name, "Privileges of "..param..": "..table.concat(privs, " "))
+ minetest.chat_send_player(name, "Privileges of "..param..": "..minetest.privs_to_string(minetest.get_player_privs(param), ' '))
end,
})
minetest.register_chatcommand("grant", {
@@ -1013,6 +1009,10 @@ minetest.register_chatcommand("grant", {
privs[priv] = true
end
minetest.set_player_privs(grantname, privs)
+ minetest.chat_send_player(name, "Privileges of "..grantname..": "..minetest.privs_to_string(minetest.get_player_privs(grantname), ' '))
+ if grantname ~= name then
+ minetest.chat_send_player(grantname, name.." granted you privileges: "..minetest.privs_to_string(grantprivs, ' '))
+ end
end,
})
minetest.register_chatcommand("revoke", {
@@ -1031,6 +1031,10 @@ minetest.register_chatcommand("revoke", {
privs[priv] = nil
end
minetest.set_player_privs(revokename, privs)
+ minetest.chat_send_player(name, "Privileges of "..revokename..": "..minetest.privs_to_string(minetest.get_player_privs(revokename), ' '))
+ if revokename ~= name then
+ minetest.chat_send_player(revokename, name.." revoked privileges from you: "..minetest.privs_to_string(revokeprivs, ' '))
+ end
end,
})
minetest.register_chatcommand("setpassword", {
@@ -1056,6 +1060,20 @@ minetest.register_chatcommand("clearpassword", {
end,
})
+minetest.register_chatcommand("auth_reload", {
+ params = "",
+ description = "reload authentication data",
+ privs = {server=true},
+ func = function(name, param)
+ local done = minetest.auth_reload()
+ if done then
+ minetest.chat_send_player(name, "Done.")
+ else
+ minetest.chat_send_player(name, "Failed.")
+ end
+ end,
+})
+
minetest.register_chatcommand("teleport", {
params = "<X>,<Y>,<Z> | <to_name> | <name> <X>,<Y>,<Z> | <name> <to_name>",
description = "teleport to given position",
@@ -1179,24 +1197,26 @@ end)
-- Authentication handler
--
-function minetest.string_to_privs(str)
+function minetest.string_to_privs(str, delim)
assert(type(str) == "string")
+ delim = delim or ','
privs = {}
- for _, priv in pairs(string.split(str, ',')) do
+ for _, priv in pairs(string.split(str, delim)) do
privs[priv:trim()] = true
end
return privs
end
-function minetest.privs_to_string(privs)
+function minetest.privs_to_string(privs, delim)
assert(type(privs) == "table")
+ delim = delim or ','
list = {}
for priv, bool in pairs(privs) do
if bool then
table.insert(list, priv)
end
end
- return table.concat(list, ',')
+ return table.concat(list, delim)
end
assert(minetest.string_to_privs("a,b").b == true)
@@ -1319,7 +1339,11 @@ minetest.builtin_auth_handler = {
minetest.auth_table[name].privileges = privileges
minetest.notify_authentication_modified(name)
save_auth_file()
- end
+ end,
+ reload = function()
+ read_auth_file()
+ return true
+ end,
}
function minetest.register_authentication_handler(handler)
@@ -1338,11 +1362,22 @@ function minetest.get_auth_handler()
end
function minetest.set_player_password(name, password)
- minetest.get_auth_handler().set_password(name, password)
+ if minetest.get_auth_handler().set_password then
+ minetest.get_auth_handler().set_password(name, password)
+ end
end
function minetest.set_player_privs(name, privs)
- minetest.get_auth_handler().set_privileges(name, privs)
+ if minetest.get_auth_handler().set_privileges then
+ minetest.get_auth_handler().set_privileges(name, privs)
+ end
+end
+
+function minetest.auth_reload()
+ if minetest.get_auth_handler().reload then
+ return minetest.get_auth_handler().reload()
+ end
+ return false
end
--