diff --git a/src/db/dbdefs.h b/src/db/dbdefs.h index 038c02f8..5122ed5a 100644 --- a/src/db/dbdefs.h +++ b/src/db/dbdefs.h @@ -22,16 +22,18 @@ #define _DBDEFS_H_ #include +#include typedef unsigned DB_id; #define DB_ID_INVALID 0 struct DBPlayerData { + DBPlayerData() : id(DB_ID_INVALID), last_login(0) {} DB_id id; std::string secret; std::string country; - std::string last_login; + time_t last_login; }; #endif diff --git a/src/db/serverdbcallback.h b/src/db/serverdbcallback.h index d5323b1b..e19e8d2d 100644 --- a/src/db/serverdbcallback.h +++ b/src/db/serverdbcallback.h @@ -38,6 +38,7 @@ public: virtual void PlayerLoginSuccess(unsigned requestId, const DBPlayerData &dbPlayerData) = 0; virtual void PlayerLoginFailed(unsigned requestId) = 0; + virtual void PlayerLoginBlocked(unsigned requestId) = 0; virtual void CreateGameSuccess(unsigned requestId, DB_id gameId) = 0; virtual void CreateGameFailed(unsigned requestId) = 0; diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 7fa115fc..b4f500cc 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -123,6 +123,11 @@ public: m_server.UserInvalid(requestId); } + virtual void PlayerLoginBlocked(unsigned requestId) + { + m_server.UserBlocked(requestId); + } + virtual void CreateGameSuccess(unsigned requestId, DB_id gameId) { m_server.SetGameDBId((u_int32_t)requestId, gameId); @@ -1509,6 +1514,12 @@ ServerLobbyThread::UserInvalid(unsigned playerId) SessionError(m_sessionManager.GetSessionByUniquePlayerId(playerId, true), ERR_NET_INVALID_PASSWORD); } +void +ServerLobbyThread::UserBlocked(unsigned playerId) +{ + SessionError(m_sessionManager.GetSessionByUniquePlayerId(playerId, true), ERR_NET_PLAYER_BANNED); +} + void ServerLobbyThread::RequestPlayerAvatar(SessionWrapper session) { diff --git a/src/net/serverlobbythread.h b/src/net/serverlobbythread.h index 19ce9fd0..e52c5c8f 100644 --- a/src/net/serverlobbythread.h +++ b/src/net/serverlobbythread.h @@ -147,6 +147,7 @@ protected: void AuthenticatePlayer(SessionWrapper session); void UserValid(unsigned playerId, const DBPlayerData &dbPlayerData); void UserInvalid(unsigned playerId); + void UserBlocked(unsigned playerId); void RequestPlayerAvatar(SessionWrapper session); void TimerRemoveGame(const boost::system::error_code &ec); void TimerRemovePlayer(const boost::system::error_code &ec);