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 mod_priv = verbana.privs.moderator
|
||||||
local admin_priv = verbana.privs.admin
|
local admin_priv = verbana.privs.admin
|
||||||
|
local kick_priv = verbana.privs.kick
|
||||||
local debug_mode = settings.debug_mode
|
local debug_mode = settings.debug_mode
|
||||||
|
|
||||||
local parse_timespan = util.parse_timespan
|
local parse_timespan = util.parse_timespan
|
||||||
|
@ -250,11 +251,22 @@ register_chatcommand('unverify', {
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local kick_privs = {[mod_priv]=true}
|
||||||
|
if kick_priv and kick_priv ~= mod_priv then
|
||||||
|
kick_privs = nil
|
||||||
|
end
|
||||||
|
|
||||||
override_chatcommand('kick', {
|
override_chatcommand('kick', {
|
||||||
description='Kick a player',
|
description='Kick a player',
|
||||||
params='<player_name> [<reason>]',
|
params='<player_name> [<reason>]',
|
||||||
privs={[mod_priv]=true},
|
privs=kick_privs or {},
|
||||||
func=function(caller, params)
|
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)
|
local player_id, player_name, _, reason = parse_player_status_params(params)
|
||||||
if not player_id then
|
if not player_id then
|
||||||
return false, reason
|
return false, reason
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
verbana.data.import = verbana.data.import or {}
|
verbana.import = verbana.import or {}
|
||||||
verbana.import.sban = {}
|
verbana.import.sban = {}
|
||||||
local _sban = {}
|
local _sban = {}
|
||||||
|
|
||||||
|
@ -153,4 +153,4 @@ function _sban.import(filename)
|
||||||
end
|
end
|
||||||
log('action', 'imported from SBAN in %s seconds', os.clock() - start)
|
log('action', 'imported from SBAN in %s seconds', os.clock() - start)
|
||||||
return true
|
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.admin = verbana.settings.admin_priv
|
||||||
verbana.privs.moderator = verbana.settings.moderator_priv
|
verbana.privs.moderator = verbana.settings.moderator_priv
|
||||||
|
verbana.privs.kick = verbana.settings.kick_priv
|
||||||
|
|
||||||
if not minetest.registered_privileges[verbana.privs.admin] then
|
if not minetest.registered_privileges[verbana.privs.admin] then
|
||||||
minetest.register_privilege(verbana.privs.admin, 'Verbana administrator')
|
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')
|
minetest.register_privilege(verbana.privs.moderator, 'Verbana moderator')
|
||||||
end
|
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)
|
function verbana.privs.is_admin(name)
|
||||||
return minetest.check_player_privs(name, {[verbana.privs.admin] = true})
|
return minetest.check_player_privs(name, {[verbana.privs.admin] = true})
|
||||||
end
|
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.admin_priv = get_setting('verbana.admin_priv', 'ban_admin')
|
||||||
verbana.settings.moderator_priv = get_setting('verbana.moderator_priv', 'ban')
|
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.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'))
|
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)
|
# The privilege of the Verbana moderator(s)
|
||||||
verbana.moderator_priv (Priv required for Verbana moderation) string ban
|
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
|
# Comma delimited
|
||||||
verbana.unverified_privs (Privs for unverified users) string shout
|
verbana.unverified_privs (Privs for unverified users) string shout
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue