From 8d07b11eae59d5e57080ae5a10e4da3bba768c4c Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Tue, 26 May 2026 12:18:38 +0530 Subject: [PATCH] Fix login validation and improve error messages - Check if user account is inactive before allowing login - Add password confirmation in change password dialog - Prevent changing password to the same value - Standardize error messages to say "Invalid index" instead of "Invalid choice" - Add blank line before system pause prompt - Add "Change Password" header to change password screen - Show error message when login fails Fixes #1738 Fixes #1736 --- .../utilities/InputHelper.h | 1 + .../views/MenuHelper.h | 32 +++++++++++++++---- .../views/UserInterface.cpp | 11 +++++-- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/InputHelper.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/InputHelper.h index e789442..75d8bbc 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/InputHelper.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/InputHelper.h @@ -62,6 +62,7 @@ namespace util */ inline void pressEnter() { + std::cout << std::endl; system("pause"); } } \ No newline at end of file diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/MenuHelper.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/MenuHelper.h index 65c0d64..e9aed78 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/MenuHelper.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/MenuHelper.h @@ -77,7 +77,7 @@ inline std::string selectServicesToRemove(util::Map } else { - std::cout << "Invalid choice." << std::endl; + std::cout << "Invalid index." << std::endl; return ""; } } @@ -359,7 +359,7 @@ static std::string selectInvoiceFromUserForPayment(const util::MapgetPassword()) + { + std::cout << "New password cannot be same as old password. Try again\n"; + util::pressEnter(); + continue; + } + std::cout << "Confirm new password: "; + util::read(confirmedPassword); + if (confirmedPassword != newPassword) + { + std::cout << "Passwords are different. Try again\n"; + util::pressEnter(); + continue; + } controller.changePassword(newPassword); std::cout << "Password changed successfully\n"; util::pressEnter(); diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/UserInterface.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/UserInterface.cpp index d1c48ba..5de852d 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/UserInterface.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/UserInterface.cpp @@ -85,14 +85,15 @@ void UserInterface::login() { std::string username, password; util::clear(); - std::cout << "Enter username: "; + std::cout << "Login "; + std::cout << "\nEnter username: "; util::read(username); std::cout << "Enter password: "; util::read(password); if (m_controller.login(username, password)) { const User* authenticatedUser = m_controller.getAuthenticatedUser(); - if (authenticatedUser != nullptr) + if (authenticatedUser && authenticatedUser->getState() != util::State::INACTIVE) { switch (authenticatedUser->getUserType()) { @@ -110,10 +111,16 @@ void UserInterface::login() break; } } + else if (authenticatedUser && authenticatedUser->getState() == util::State::INACTIVE) + { + std::cout << "\nError: Your account has been disabled. Please contact your Administrator."; + util::pressEnter(); + } } else { std::cout << "\nError: Invalid Username or Password"; + util::pressEnter(); } }