mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-28 01:23:55 -07:00
disallow users on your ignore list to get your current games (#6109)
This commit is contained in:
parent
0f11fbe599
commit
0147a1d41f
2 changed files with 25 additions and 1 deletions
|
|
@ -79,8 +79,21 @@ void UserContextMenu::retranslateUi()
|
||||||
|
|
||||||
void UserContextMenu::gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer)
|
void UserContextMenu::gamesOfUserReceived(const Response &resp, const CommandContainer &commandContainer)
|
||||||
{
|
{
|
||||||
const Response_GetGamesOfUser &response = resp.GetExtension(Response_GetGamesOfUser::ext);
|
|
||||||
const Command_GetGamesOfUser &cmd = commandContainer.session_command(0).GetExtension(Command_GetGamesOfUser::ext);
|
const Command_GetGamesOfUser &cmd = commandContainer.session_command(0).GetExtension(Command_GetGamesOfUser::ext);
|
||||||
|
if (resp.response_code() == Response::RespNameNotFound) {
|
||||||
|
QMessageBox::critical(static_cast<QWidget *>(parent()), tr("Error"), tr("This user does not exist."));
|
||||||
|
return;
|
||||||
|
} else if (resp.response_code() == Response::RespInIgnoreList) {
|
||||||
|
QMessageBox::critical(
|
||||||
|
static_cast<QWidget *>(parent()), tr("Error"),
|
||||||
|
tr("You are being ignored by %1 and can't see their games.").arg(QString::fromStdString(cmd.user_name())));
|
||||||
|
return;
|
||||||
|
} else if (resp.response_code() != Response::RespOk) {
|
||||||
|
QMessageBox::critical(static_cast<QWidget *>(parent()), tr("Error"),
|
||||||
|
tr("Could not get %1's games.").arg(QString::fromStdString(cmd.user_name())));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const Response_GetGamesOfUser &response = resp.GetExtension(Response_GetGamesOfUser::ext);
|
||||||
|
|
||||||
QMap<int, GameTypeMap> gameTypeMap;
|
QMap<int, GameTypeMap> gameTypeMap;
|
||||||
QMap<int, QString> roomMap;
|
QMap<int, QString> roomMap;
|
||||||
|
|
|
||||||
|
|
@ -602,6 +602,17 @@ Response::ResponseCode Server_ProtocolHandler::cmdGetGamesOfUser(const Command_G
|
||||||
if (authState == NotLoggedIn)
|
if (authState == NotLoggedIn)
|
||||||
return Response::RespLoginNeeded;
|
return Response::RespLoginNeeded;
|
||||||
|
|
||||||
|
// Do not show games to someone on the ignore list of that user, except for mods
|
||||||
|
QString target_user = nameFromStdString(cmd.user_name());
|
||||||
|
Server_AbstractUserInterface *userInterface = server->findUser(target_user);
|
||||||
|
if (!userInterface) {
|
||||||
|
return Response::RespNameNotFound;
|
||||||
|
}
|
||||||
|
if (!(userInfo->user_level() & (ServerInfo_User::IsModerator | ServerInfo_User::IsAdmin)) &&
|
||||||
|
databaseInterface->isInIgnoreList(target_user, QString::fromStdString(userInfo->name()))) {
|
||||||
|
return Response::RespInIgnoreList;
|
||||||
|
}
|
||||||
|
|
||||||
// We don't need to check whether the user is logged in; persistent games should also work.
|
// We don't need to check whether the user is logged in; persistent games should also work.
|
||||||
// The client needs to deal with an empty result list.
|
// The client needs to deal with an empty result list.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue