summaryrefslogtreecommitdiff
path: root/src/net/manaserv/loginhandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/manaserv/loginhandler.cpp')
-rw-r--r--src/net/manaserv/loginhandler.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/net/manaserv/loginhandler.cpp b/src/net/manaserv/loginhandler.cpp
index ff8d142d..bd29d1d9 100644
--- a/src/net/manaserv/loginhandler.cpp
+++ b/src/net/manaserv/loginhandler.cpp
@@ -50,6 +50,7 @@ LoginHandler::LoginHandler()
APMSG_EMAIL_CHANGE_RESPONSE,
APMSG_LOGOUT_RESPONSE,
APMSG_UNREGISTER_RESPONSE,
+ APMSG_REGISTER_INFO_RESPONSE,
0
};
handledMessages = _messages;
@@ -206,6 +207,35 @@ void LoginHandler::handleMessage(Net::MessageIn &msg)
}
}
break;
+
+ case APMSG_REGISTER_INFO_RESPONSE:
+ {
+ int allowed = msg.readInt8();
+
+ if (allowed)
+ {
+ mMinUserNameLength = msg.readInt8();
+ mMaxUserNameLength = msg.readInt8();
+ mMinPasswordLength = msg.readInt8();
+ mMaxPasswordLength = msg.readInt8();
+ std::string captchaURL = msg.readString();
+ std::string captchaInstructions = msg.readString();
+
+ printf("%s: %s\n", captchaURL.c_str(), captchaInstructions.c_str());
+
+ state = STATE_REGISTER;
+ }
+ else
+ {
+ errorMessage = msg.readString();
+
+ if (errorMessage.empty())
+ errorMessage = _("Client registration is not allowed. "
+ "Please contact server administration.");
+ state = STATE_LOGIN_ERROR;
+ }
+ }
+ break;
}
}
@@ -270,6 +300,10 @@ void LoginHandler::handleRegisterResponse(Net::MessageIn &msg)
case REGISTER_EXISTS_EMAIL:
errorMessage = _("Email address already exists.");
break;
+ case REGISTER_FAILED_CAPTCHA:
+ errorMessage = _("You took too long with the captcha or your "
+ "response was incorrect.");
+ break;
default:
errorMessage = _("Unknown error.");
break;
@@ -307,6 +341,32 @@ void LoginHandler::disconnect()
}
}
+void LoginHandler::getRegistrationDetails()
+{
+ MessageOut msg(PAMSG_REQUEST_REGISTER_INFO);
+ accountServerConnection->send(msg);
+}
+
+unsigned int LoginHandler::getMinUserNameLength() const
+{
+ return mMinUserNameLength;
+}
+
+unsigned int LoginHandler::getMaxUserNameLength() const
+{
+ return mMaxUserNameLength;
+}
+
+unsigned int LoginHandler::getMinPasswordLength() const
+{
+ return mMinPasswordLength;
+}
+
+unsigned int LoginHandler::getMaxPasswordLength() const
+{
+ return mMaxPasswordLength;
+}
+
void LoginHandler::loginAccount(LoginData *loginData)
{
mLoginData = loginData;
@@ -366,6 +426,7 @@ void LoginHandler::registerAccount(LoginData *loginData)
// This is the only time we send a clear password.
msg.writeString(loginData->password);
msg.writeString(loginData->email);
+ msg.writeString(loginData->captchaResponse);
accountServerConnection->send(msg);
}