}
save_auth_file()
end,
+ delete_auth = function(name)
+ assert(type(name) == "string")
+ if not auth_table[name] then
+ return false
+ end
+ core.log('info', "Built-in authentication handler deleting player '"..name.."'")
+ auth_table[name] = nil
+ save_auth_file()
+ return true
+ end,
set_password = function(name, password)
assert(type(name) == "string")
assert(type(password) == "string")
assert(auth_table[name]).last_login = os.time()
save_auth_file()
end,
+ iterate = function()
+ local names = {}
+ for k in pairs(auth_table) do
+ names[k] = true
+ end
+ return pairs(names)
+ end,
}
core.register_on_prejoinplayer(function(name, ip)
core.set_player_password = auth_pass("set_password")
core.set_player_privs = auth_pass("set_privileges")
+core.remove_player_auth = auth_pass("delete_auth")
core.auth_reload = auth_pass("reload")
local record_login = auth_pass("record_login")
* `minetest.get_server_status()`: returns server status string
* `minetest.get_server_uptime()`: returns the server uptime in seconds
* `minetest.remove_player(name)`: remove player from database (if he is not connected).
- * Does not remove player authentication data, minetest.player_exists will continue to return true.
+ * As auth data is not removed, minetest.player_exists will continue to return true.
+ Call the below method as well if you want to remove auth data too.
* Returns a code (0: successful, 1: no such player, 2: player is connected)
+* `minetest.remove_player_auth(name)`: remove player authentication data
+ * Returns boolean indicating success (false if player nonexistant)
### Bans
* `minetest.get_ban_list()`: returns the ban list (same as `minetest.get_ban_description("")`)
create_auth = func(name, password),
-- ^ Create new auth data for player `name`
-- ^ Note that `password` is not plain-text but an arbitrary representation decided by the engine
+ delete_auth = func(name),
+ -- ^ Delete auth data of player `name`, returns boolean indicating success (false if player nonexistant)
set_password = func(name, password),
-- ^ Set password of player `name` to `password`
Auth data should be created if not present
-- ^ Returns boolean indicating success
record_login = func(name),
-- ^ Called when player joins, used for keeping track of last_login
+ iterate = func(),
+ -- ^ Returns an iterator (use with `for` loops) for all player names currently in the auth database
}