]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - builtin/game/auth.lua
Add formspec escaping to subgame list in create world dialog (#5808)
[dragonfireclient.git] / builtin / game / auth.lua
index 423eb3134a29964b1f23a7738df408b620ad432c..8cb4ebf57dedbfb57c1e37c3ddaa3df9a6409804 100644 (file)
@@ -20,7 +20,7 @@ function core.privs_to_string(privs, delim)
        local list = {}
        for priv, bool in pairs(privs) do
                if bool then
-                       table.insert(list, priv)
+                       list[#list + 1] = priv
                end
        end
        return table.concat(list, delim)
@@ -106,7 +106,7 @@ core.builtin_auth_handler = {
                                end
                        end
                -- For the admin, give everything
-               elseif name == core.setting_get("name") then
+               elseif name == core.settings:get("name") then
                        for priv, def in pairs(core.registered_privileges) do
                                privileges[priv] = true
                        end
@@ -125,7 +125,7 @@ core.builtin_auth_handler = {
                core.log('info', "Built-in authentication handler adding player '"..name.."'")
                core.auth_table[name] = {
                        password = password,
-                       privileges = core.string_to_privs(core.setting_get("default_privs")),
+                       privileges = core.string_to_privs(core.settings:get("default_privs")),
                        last_login = os.time(),
                }
                save_auth_file()
@@ -148,7 +148,7 @@ core.builtin_auth_handler = {
                if not core.auth_table[name] then
                        core.builtin_auth_handler.create_auth(name,
                                core.get_password_hash(name,
-                                       core.setting_get("default_password")))
+                                       core.settings:get("default_password")))
                end
                core.auth_table[name].privileges = privileges
                core.notify_authentication_modified(name)
@@ -199,3 +199,19 @@ core.register_on_joinplayer(function(player)
        record_login(player:get_player_name())
 end)
 
+core.register_on_prejoinplayer(function(name, ip)
+       local auth = core.auth_table
+       if auth[name] ~= nil then
+               return
+       end
+
+       local name_lower = name:lower()
+       for k in pairs(auth) do
+               if k:lower() == name_lower then
+                       return string.format("\nCannot create new player called '%s'. "..
+                                       "Another account called '%s' is already registered. "..
+                                       "Please check the spelling if it's your account "..
+                                       "or use a different nickname.", name, k)
+               end
+       end
+end)