Skip to content

Commit

Permalink
Builtin: Add basic_privs setting
Browse files Browse the repository at this point in the history
  • Loading branch information
rubenwardy authored and paramat committed Apr 28, 2016
1 parent 30083d1 commit 17bfe2f
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 3 deletions.
8 changes: 6 additions & 2 deletions builtin/game/chatcommands.lua
Expand Up @@ -181,8 +181,10 @@ core.register_chatcommand("grant", {
end
local privs = core.get_player_privs(grantname)
local privs_unknown = ""
local basic_privs =
core.string_to_privs(core.setting_get("basic_privs") or "interact,shout")
for priv, _ in pairs(grantprivs) do
if priv ~= "interact" and priv ~= "shout" and
if not basic_privs[priv] and
not core.check_player_privs(name, {privs=true}) then
return false, "Your privileges are insufficient."
end
Expand Down Expand Up @@ -223,8 +225,10 @@ core.register_chatcommand("revoke", {
end
local revoke_privs = core.string_to_privs(revoke_priv_str)
local privs = core.get_player_privs(revoke_name)
local basic_privs =
core.string_to_privs(core.setting_get("basic_privs") or "interact,shout")
for priv, _ in pairs(revoke_privs) do
if priv ~= "interact" and priv ~= "shout" and
if not basic_privs[priv] and
not core.check_player_privs(name, {privs=true}) then
return false, "Your privileges are insufficient."
end
Expand Down
3 changes: 3 additions & 0 deletions builtin/settingtypes.txt
Expand Up @@ -691,6 +691,9 @@ default_password (Default password) string
# See /privs in game for a full list on your server and mod configuration.
default_privs (Default privileges) string interact, shout

# Privileges that players with basic_privs can grant
basic_privs (Basic Privileges) string interact, shout

# Whether players are shown to clients without any range limit.
# Deprecated, use the setting player_transfer_distance instead.
unlimited_player_transfer_distance (Unlimited player transfer distance) bool true
Expand Down
1 change: 1 addition & 0 deletions doc/lua_api.txt
Expand Up @@ -1924,6 +1924,7 @@ Call these functions only at load time!
* `minetest.register_privilege(name, definition)`
* `definition`: `"description text"`
* `definition`: `{ description = "description text", give_to_singleplayer = boolean, -- default: true }`
* To allow players with basic_privs to grant, see basic_privs minetest.conf setting.
* `minetest.register_authentication_handler(handler)`
* See `minetest.builtin_auth_handler` in `builtin.lua` for reference

Expand Down
5 changes: 4 additions & 1 deletion minetest.conf.example
Expand Up @@ -826,6 +826,10 @@
# type: string
# default_privs = interact, shout

# Privileges that players with basic_privs can grant
# type: string
# basic_privs = interact, shout

# Whether players are shown to clients without any range limit.
# Deprecated, use the setting player_transfer_distance instead.
# type: bool
Expand Down Expand Up @@ -1513,4 +1517,3 @@

# type: string
# modstore_details_url = https://forum.minetest.net/mmdb/mod/*/

0 comments on commit 17bfe2f

Please sign in to comment.