From 9246ad96b393dff5d3e3cd8feec1a6148d45408b Mon Sep 17 00:00:00 2001 From: javabird25 Date: Mon, 7 Mar 2022 13:23:04 +0500 Subject: [PATCH] LoginServer: Add a label for login fail messages --- Userland/Services/LoginServer/LoginWindow.cpp | 9 +++++++++ Userland/Services/LoginServer/LoginWindow.gml | 5 +++++ Userland/Services/LoginServer/LoginWindow.h | 4 ++++ Userland/Services/LoginServer/main.cpp | 3 +++ 4 files changed, 21 insertions(+) diff --git a/Userland/Services/LoginServer/LoginWindow.cpp b/Userland/Services/LoginServer/LoginWindow.cpp index 3749c705fa..b33769edbd 100644 --- a/Userland/Services/LoginServer/LoginWindow.cpp +++ b/Userland/Services/LoginServer/LoginWindow.cpp @@ -36,4 +36,13 @@ LoginWindow::LoginWindow(GUI::Window* parent) on_submit(); }; m_log_in_button->set_default(true); + + m_fail_message = *widget.find_descendant_of_type_named("fail_message"); + m_username->on_change = [&] { + m_fail_message->set_text(""); + }; + m_password->on_change = [&] { + if (!m_password->text().is_empty()) + m_fail_message->set_text(""); + }; } diff --git a/Userland/Services/LoginServer/LoginWindow.gml b/Userland/Services/LoginServer/LoginWindow.gml index 7ddb731547..100329ffdc 100644 --- a/Userland/Services/LoginServer/LoginWindow.gml +++ b/Userland/Services/LoginServer/LoginWindow.gml @@ -25,6 +25,11 @@ @GUI::Widget { layout: @GUI::HorizontalBoxLayout {} + @GUI::Label { + name: "fail_message" + text_alignment: "CenterLeft" + } + @GUI::Widget {} @GUI::Button { diff --git a/Userland/Services/LoginServer/LoginWindow.h b/Userland/Services/LoginServer/LoginWindow.h index 823eae55bf..9df29d08b0 100644 --- a/Userland/Services/LoginServer/LoginWindow.h +++ b/Userland/Services/LoginServer/LoginWindow.h @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -25,11 +26,14 @@ public: String password() const { return m_password->text(); } void set_password(StringView password) { m_password->set_text(password); } + void set_fail_message(StringView message) { m_fail_message->set_text(message); } + private: LoginWindow(GUI::Window* parent = nullptr); RefPtr m_banner; RefPtr m_username; RefPtr m_password; + RefPtr m_fail_message; RefPtr m_log_in_button; }; diff --git a/Userland/Services/LoginServer/main.cpp b/Userland/Services/LoginServer/main.cpp index 07472f42bb..8c49eaa813 100644 --- a/Userland/Services/LoginServer/main.cpp +++ b/Userland/Services/LoginServer/main.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -73,11 +74,13 @@ ErrorOr serenity_main(Main::Arguments arguments) auto account = Core::Account::from_name(username.characters()); if (account.is_error()) { + window->set_fail_message(String::formatted("Can't log in: {}.", account.error())); dbgln("failed graphical login for user {}: {}", username, account.error()); return; } if (!account.value().authenticate(password)) { + window->set_fail_message("Can't log in: invalid password."); dbgln("failed graphical login for user {}: invalid password", username); return; }