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.
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
api.baseUrl=http://localhost:8080
|
|
||||||
@@ -63,6 +63,13 @@ public class LoginController {
|
|||||||
if (token == null || roleStr == null) {
|
if (token == null || roleStr == null) {
|
||||||
throw new IllegalStateException("Token or role is 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());
|
Role role = Role.valueOf(roleStr.toUpperCase());
|
||||||
|
|
||||||
UserSession.getInstance().login(null, username, role, token);
|
UserSession.getInstance().login(null, username, role, token);
|
||||||
|
|||||||
@@ -173,8 +173,14 @@ public class MainLayoutController {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
void logoClicked(MouseEvent event) {
|
void logoClicked(MouseEvent event) {
|
||||||
|
UserSession session = UserSession.getInstance();
|
||||||
|
if (session.isAdmin()) {
|
||||||
loadView("analytics-view.fxml");
|
loadView("analytics-view.fxml");
|
||||||
updateButtons(btnAnalytics);
|
updateButtons(btnAnalytics);
|
||||||
|
} else {
|
||||||
|
loadView("sale-view.fxml");
|
||||||
|
updateButtons(btnSalesHistory);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
@@ -201,8 +207,14 @@ public class MainLayoutController {
|
|||||||
public void initialize() {
|
public void initialize() {
|
||||||
applyRBAC();
|
applyRBAC();
|
||||||
|
|
||||||
|
UserSession session = UserSession.getInstance();
|
||||||
|
if (session.isAdmin()) {
|
||||||
loadView("analytics-view.fxml");
|
loadView("analytics-view.fxml");
|
||||||
updateButtons(btnAnalytics);
|
updateButtons(btnAnalytics);
|
||||||
|
} else {
|
||||||
|
loadView("sale-view.fxml");
|
||||||
|
updateButtons(btnSalesHistory);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyRBAC() {
|
private void applyRBAC() {
|
||||||
@@ -241,6 +253,11 @@ public class MainLayoutController {
|
|||||||
separatorAdmin.setManaged(isAdmin);
|
separatorAdmin.setManaged(isAdmin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (btnAnalytics != null) {
|
||||||
|
btnAnalytics.setVisible(isAdmin);
|
||||||
|
btnAnalytics.setManaged(isAdmin);
|
||||||
|
}
|
||||||
|
|
||||||
btnSalesHistory.setText(isAdmin ? "Sales History" : "Sales");
|
btnSalesHistory.setText(isAdmin ? "Sales History" : "Sales");
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user