From 4d3f49696ef96e78b8d1653c86b83b257f4dbec8 Mon Sep 17 00:00:00 2001 From: jonkoorm Date: Sun, 24 Oct 2021 15:54:49 -0500 Subject: Enable password remembering in user login Password is recorded in the 'password' option in config.xml The 'remember_password' option is added to save the status --- src/progs/manaplus/client.cpp | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'src/progs') diff --git a/src/progs/manaplus/client.cpp b/src/progs/manaplus/client.cpp index d8ba7e1c2..6b05b0809 100644 --- a/src/progs/manaplus/client.cpp +++ b/src/progs/manaplus/client.cpp @@ -497,6 +497,7 @@ void Client::gameInit() loginData.password = settings.options.password; LoginDialog::savedPassword = settings.options.password; loginData.remember = (serverConfig.getValue("remember", 1) != 0); + loginData.remember_password = (serverConfig.getValue("remember_password", 1) != 0); loginData.registerLogin = false; if (mCurrentServer.hostname.empty()) @@ -517,6 +518,9 @@ void Client::gameInit() if (loginData.username.empty() && loginData.remember) loginData.username = serverConfig.getValue("username", ""); + + if (loginData.password.empty() && loginData.remember_password) + loginData.password = serverConfig.getValue("password", ""); if (mState != State::ERROR) mState = State::CHOOSE_SERVER; @@ -853,16 +857,28 @@ void Client::stateConnectServer1() { loginData.username = settings.options.username; } -#ifdef SAVE_PASSWORD - LoginDialog::savedPassword = loginData.remember ? - serverConfig.getValue("password", "") : ""; - loginData.password = LoginDialog::savedPassword; - settings.options.password = LoginDialog::savedPassword; -#endif + + if (settings.options.password.empty()) + { + if (loginData.remember_password) + { + LoginDialog::savedPassword = serverConfig.getValue("password", ""); + loginData.password = LoginDialog::savedPassword; + settings.options.password = LoginDialog::savedPassword; + } + else + loginData.password.clear(); + } + else + { + loginData.password = settings.options.password; + } + settings.login = loginData.username; WindowManager::updateTitle(); loginData.remember = (serverConfig.getValue("remember", 1) != 0); + loginData.remember_password = (serverConfig.getValue("remember_password", 1) != 0); Net::connectToServer(mCurrentServer); #ifdef USE_MUMBLE @@ -1638,13 +1654,11 @@ int Client::gameExec() case State::ERROR: BLOCK_START("Client::gameExec State::ERROR") config.write(); -#ifdef SAVE_PASSWORD if (errorMessage == "Wrong password.") { serverConfig.setValue("password", ""); serverConfig.write(); } -#endif if (mOldState == State::GAME) serverConfig.write(); logger->log1("State: ERROR"); -- cgit v1.2.3-70-g09d2