add option to enable a separate 'kick' privilege
parent
c867a0b34b
commit
f1251d6454
14
commands.lua
14
commands.lua
|
@ -9,6 +9,7 @@ local util = verbana.util
|
|||
|
||||
local mod_priv = verbana.privs.moderator
|
||||
local admin_priv = verbana.privs.admin
|
||||
local kick_priv = verbana.privs.kick
|
||||
local debug_mode = settings.debug_mode
|
||||
|
||||
local parse_timespan = util.parse_timespan
|
||||
|
@ -250,11 +251,22 @@ register_chatcommand('unverify', {
|
|||
end
|
||||
})
|
||||
|
||||
local kick_privs = {[mod_priv]=true}
|
||||
if kick_priv and kick_priv ~= mod_priv then
|
||||
kick_privs = nil
|
||||
end
|
||||
|
||||
override_chatcommand('kick', {
|
||||
description='Kick a player',
|
||||
params='<player_name> [<reason>]',
|
||||
privs={[mod_priv]=true},
|
||||
privs=kick_privs or {},
|
||||
func=function(caller, params)
|
||||
if not kick_privs then
|
||||
if not (minetest.check_player_privs(caller, {[mod_priv]=true}) or
|
||||
minetest.check_player_privs(caller, {[kick_priv]=true})) then
|
||||
return false, "You lack sufficient privileges to run this command"
|
||||
end
|
||||
end
|
||||
local player_id, player_name, _, reason = parse_player_status_params(params)
|
||||
if not player_id then
|
||||
return false, reason
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
verbana.data.import = verbana.data.import or {}
|
||||
verbana.import = verbana.import or {}
|
||||
verbana.import.sban = {}
|
||||
local _sban = {}
|
||||
|
||||
|
@ -153,4 +153,4 @@ function _sban.import(filename)
|
|||
end
|
||||
log('action', 'imported from SBAN in %s seconds', os.clock() - start)
|
||||
return true
|
||||
end -- data.import_from_sban
|
||||
end -- import_from_sban
|
||||
|
|
|
@ -2,6 +2,7 @@ verbana.privs = {}
|
|||
|
||||
verbana.privs.admin = verbana.settings.admin_priv
|
||||
verbana.privs.moderator = verbana.settings.moderator_priv
|
||||
verbana.privs.kick = verbana.settings.kick_priv
|
||||
|
||||
if not minetest.registered_privileges[verbana.privs.admin] then
|
||||
minetest.register_privilege(verbana.privs.admin, 'Verbana administrator')
|
||||
|
@ -11,6 +12,14 @@ if not minetest.registered_privileges[verbana.privs.moderator] then
|
|||
minetest.register_privilege(verbana.privs.moderator, 'Verbana moderator')
|
||||
end
|
||||
|
||||
minetest.registered_privileges['kick'] = nil
|
||||
|
||||
if verbana.privs.kick then
|
||||
if not minetest.registered_privileges[verbana.privs.kick] then
|
||||
minetest.register_privilege(verbana.privs.kick, 'Verbana kicker')
|
||||
end
|
||||
end
|
||||
|
||||
function verbana.privs.is_admin(name)
|
||||
return minetest.check_player_privs(name, {[verbana.privs.admin] = true})
|
||||
end
|
||||
|
|
|
@ -50,6 +50,7 @@ verbana.settings.asn_data_path = get_setting('verbana.asn_data_path', ('%s/data-
|
|||
|
||||
verbana.settings.admin_priv = get_setting('verbana.admin_priv', 'ban_admin')
|
||||
verbana.settings.moderator_priv = get_setting('verbana.moderator_priv', 'ban')
|
||||
verbana.settings.kick_priv = get_setting('verbana.kick_priv', nil)
|
||||
|
||||
verbana.settings.verified_privs = minetest.string_to_privs(get_setting('default_privs', 'shout,interact'))
|
||||
verbana.settings.unverified_privs = minetest.string_to_privs(get_setting('verbana.unverified_privs', 'shout'))
|
||||
|
|
|
@ -13,6 +13,9 @@ verbana.admin_priv (Priv required for Verbana administration) string ban_admin
|
|||
# The privilege of the Verbana moderator(s)
|
||||
verbana.moderator_priv (Priv required for Verbana moderation) string ban
|
||||
|
||||
# A privilege for the "kick" command, if needed
|
||||
verbana.kick_priv (additional priv for "kick" command) string
|
||||
|
||||
# Comma delimited
|
||||
verbana.unverified_privs (Privs for unverified users) string shout
|
||||
|
||||
|
|
Loading…
Reference in New Issue