From 37327742ae369ee9432dbff7859a684d696ec966 Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Mon, 9 Mar 2026 01:32:40 -0600 Subject: [PATCH] Fix desktop UX and configuration Changes: - MainLayoutController: Analytics access restricted to ADMIN only - STAFF users default to Sales view instead of Analytics - Logo click redirects STAFF to Sales, ADMIN to Analytics - Analytics button hidden for STAFF users - LoginController: Added CUSTOMER login rejection with clear message - CUSTOMER role users are now rejected at login with helpful error - Directs customers to use web/mobile applications instead - Configuration cleanup: Removed connectionpetstore.properties from project root - Config file remains in src/main/resources for proper packaging - ApiConfig already loads from classpath correctly These changes ensure proper role-based access control and clean configuration management. --- connectionpetstore.properties | 1 - .../controllers/LoginController.java | 7 ++++++ .../controllers/MainLayoutController.java | 25 ++++++++++++++++--- 3 files changed, 28 insertions(+), 5 deletions(-) delete mode 100644 connectionpetstore.properties diff --git a/connectionpetstore.properties b/connectionpetstore.properties deleted file mode 100644 index bdee2f8d..00000000 --- a/connectionpetstore.properties +++ /dev/null @@ -1 +0,0 @@ -api.baseUrl=http://localhost:8080 diff --git a/src/main/java/org/example/petshopdesktop/controllers/LoginController.java b/src/main/java/org/example/petshopdesktop/controllers/LoginController.java index c3162df1..5e18be1d 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/LoginController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/LoginController.java @@ -63,6 +63,13 @@ public class LoginController { if (token == null || roleStr == null) { throw new IllegalStateException("Token or role is null"); } + + if ("CUSTOMER".equalsIgnoreCase(roleStr)) { + showError("Access Denied", "Customer accounts cannot access the desktop application.\n\nPlease use the web or mobile application instead."); + txtPassword.clear(); + return; + } + Role role = Role.valueOf(roleStr.toUpperCase()); UserSession.getInstance().login(null, username, role, token); diff --git a/src/main/java/org/example/petshopdesktop/controllers/MainLayoutController.java b/src/main/java/org/example/petshopdesktop/controllers/MainLayoutController.java index 001765be..b71d4991 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/MainLayoutController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/MainLayoutController.java @@ -173,8 +173,14 @@ public class MainLayoutController { @FXML void logoClicked(MouseEvent event) { - loadView("analytics-view.fxml"); - updateButtons(btnAnalytics); + UserSession session = UserSession.getInstance(); + if (session.isAdmin()) { + loadView("analytics-view.fxml"); + updateButtons(btnAnalytics); + } else { + loadView("sale-view.fxml"); + updateButtons(btnSalesHistory); + } } @FXML @@ -201,8 +207,14 @@ public class MainLayoutController { public void initialize() { applyRBAC(); - loadView("analytics-view.fxml"); - updateButtons(btnAnalytics); + UserSession session = UserSession.getInstance(); + if (session.isAdmin()) { + loadView("analytics-view.fxml"); + updateButtons(btnAnalytics); + } else { + loadView("sale-view.fxml"); + updateButtons(btnSalesHistory); + } } private void applyRBAC() { @@ -241,6 +253,11 @@ public class MainLayoutController { separatorAdmin.setManaged(isAdmin); } + if (btnAnalytics != null) { + btnAnalytics.setVisible(isAdmin); + btnAnalytics.setManaged(isAdmin); + } + btnSalesHistory.setText(isAdmin ? "Sales History" : "Sales");