aboutsummaryrefslogtreecommitdiff
path: root/src/script/cpp_api/s_server.cpp
diff options
context:
space:
mode:
authorsorcerykid <rkrause@inbox.com>2020-05-23 06:24:06 -0500
committerSmallJoker <mk939@ymail.com>2020-05-23 13:25:29 +0200
commit15ba75e4cf1d1b8ceaa9d8ce33dcfdd7dbe80741 (patch)
tree482763407643cd776af9bd2c79e241969bbc644f /src/script/cpp_api/s_server.cpp
parent037422fdba9a47bd538480988fbf8aad67d66c85 (diff)
downloadminetest-15ba75e4cf1d1b8ceaa9d8ce33dcfdd7dbe80741.tar.xz
Add on_authplayer callback and 'last_login' to on_joinplayer (#9574)
Replace on_auth_fail callback with more versatile on_authplayer Better clarify account login process in Lua API documentation Change initial timestamp for newly registered accounts to -1
Diffstat (limited to 'src/script/cpp_api/s_server.cpp')
-rw-r--r--src/script/cpp_api/s_server.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/script/cpp_api/s_server.cpp b/src/script/cpp_api/s_server.cpp
index 1ce2f9d45..96cb28b28 100644
--- a/src/script/cpp_api/s_server.cpp
+++ b/src/script/cpp_api/s_server.cpp
@@ -23,7 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
bool ScriptApiServer::getAuth(const std::string &playername,
std::string *dst_password,
- std::set<std::string> *dst_privs)
+ std::set<std::string> *dst_privs,
+ s64 *dst_last_login)
{
SCRIPTAPI_PRECHECKHEADER
@@ -43,8 +44,7 @@ bool ScriptApiServer::getAuth(const std::string &playername,
luaL_checktype(L, -1, LUA_TTABLE);
std::string password;
- bool found = getstringfield(L, -1, "password", password);
- if (!found)
+ if (!getstringfield(L, -1, "password", password))
throw LuaError("Authentication handler didn't return password");
if (dst_password)
*dst_password = password;
@@ -54,7 +54,13 @@ bool ScriptApiServer::getAuth(const std::string &playername,
throw LuaError("Authentication handler didn't return privilege table");
if (dst_privs)
readPrivileges(-1, *dst_privs);
- lua_pop(L, 1);
+ lua_pop(L, 1); // Remove key from privs table
+
+ s64 last_login;
+ if(!getintfield(L, -1, "last_login", last_login))
+ throw LuaError("Authentication handler didn't return last_login");
+ if (dst_last_login)
+ *dst_last_login = (s64)last_login;
return true;
}