diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index f5dc26843..d53e1c957 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -1,4 +1,4 @@ -/*************************************************************************** +/*************************************************************************** * Copyright (C) 2008 by Max-Wilhelm Bruker * * brukie@gmx.net * * * @@ -225,7 +225,7 @@ void MainWindow::actAbout() + tr("French:") + " Yannick Hammer, Arnaud Faes
" + tr("Japanese:") + " Nagase Task
" + tr("Russian:") + " Alexander Davidov
" -// + tr("Czech:") + " Ondřej Trhoň
" +// + tr("Czech:") + " Ondrej Trhon
" // + tr("Slovak:") + " Ganjalf Rendy
" + tr("Italian:") + " Luigi Sciolla
" + tr("Swedish:") + " Jessica Dahl
" @@ -261,6 +261,9 @@ void MainWindow::loginError(Response::ResponseCode r, QString reasonStr, quint32 case Response::RespUsernameInvalid: QMessageBox::critical(this, tr("Error"), tr("Invalid username.")); break; + case Response::RespRegRequired: + QMessageBox::critical(this, tr("Error"), tr("This server requires user registration.")); + break; default: QMessageBox::critical(this, tr("Error"), tr("Unknown login error: %1").arg(static_cast(r))); } diff --git a/common/pb/response.proto b/common/pb/response.proto index 4fa3c447c..84bc8eb63 100644 --- a/common/pb/response.proto +++ b/common/pb/response.proto @@ -23,6 +23,7 @@ message Response { RespUserIsBanned = 19; RespAccessDenied = 20; RespUsernameInvalid = 21; + RespRegRequired = 22; } enum ResponseType { JOIN_ROOM = 1000; diff --git a/common/server.cpp b/common/server.cpp index f05304975..72b0a2d36 100644 --- a/common/server.cpp +++ b/common/server.cpp @@ -34,6 +34,7 @@ #include #include #include +#include Server::Server(bool _threaded, QObject *parent) : QObject(parent), threaded(_threaded), nextLocalGameId(0) @@ -131,6 +132,11 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString } else if (authState == UnknownUser) { // Change user name so that no two users have the same names, // don't interfere with registered user names though. + QSettings *settings = new QSettings("servatrice.ini", QSettings::IniFormat); + bool requireReg = settings->value("server/regonly").toBool(); + if (requireReg) + return RegistrationRequired; + QString tempName = name; int i = 0; while (users.contains(tempName) || databaseInterface->userExists(tempName) || databaseInterface->userSessionExists(tempName)) diff --git a/common/server_protocolhandler.cpp b/common/server_protocolhandler.cpp index eb8322d06..fedaab814 100644 --- a/common/server_protocolhandler.cpp +++ b/common/server_protocolhandler.cpp @@ -345,6 +345,7 @@ Response::ResponseCode Server_ProtocolHandler::cmdLogin(const Command_Login &cmd case NotLoggedIn: return Response::RespWrongPassword; case WouldOverwriteOldSession: return Response::RespWouldOverwriteOldSession; case UsernameInvalid: return Response::RespUsernameInvalid; + case RegistrationRequired: return Response::RespRegRequired; default: authState = res; } diff --git a/servatrice/servatrice.ini.example b/servatrice/servatrice.ini.example index c50ff9f1a..bb83b53ca 100644 --- a/servatrice/servatrice.ini.example +++ b/servatrice/servatrice.ini.example @@ -7,6 +7,7 @@ id=1 number_pools=1 writelog=1 logfilters="" +regonly=0 [servernetwork] active=0