diff options
Diffstat (limited to 'src/net/manaserv/loginhandler.cpp')
-rw-r--r-- | src/net/manaserv/loginhandler.cpp | 61 |
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); } |