From 3d8fa711f2f505d1926181bb28834e0b561c6016 Mon Sep 17 00:00:00 2001 From: Vladimir Valekzhanin Date: Fri, 16 Oct 2026 18:21:47 +0300 Subject: [PATCH] =?UTF-8?q?fix(=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=BB=D0=B8):=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D1=83=D0=B5=D0=BC=D0=BE=D1=81=D1=82=D1=8C=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D0=B3?= =?UTF-8?q?=D0=B5=D0=B9=D1=82=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8=20?= =?UTF-8?q?=D1=80=D0=B5=D1=81=D1=83=D1=80=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UserDetailsController.confirmDelete стал protected для подмены диалога в тестах без модалки Alert. UsersListController.setupRbac скрывает resourcesButton для не-админов с null-safe проверками. --- .../controllers/UserDetailsController.java | 6 +++++- .../controllers/UsersListController.java | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/DesktopApplicationClientJava/controllers/UserDetailsController.java b/src/main/java/com/DesktopApplicationClientJava/controllers/UserDetailsController.java index 35af61c..bb3fa23 100644 --- a/src/main/java/com/DesktopApplicationClientJava/controllers/UserDetailsController.java +++ b/src/main/java/com/DesktopApplicationClientJava/controllers/UserDetailsController.java @@ -191,7 +191,11 @@ protected Void call() { // ===== Confirmation dialog ===== - private boolean confirmDelete(User user) { + /** + * Диалог подтверждения удаления. Выделен в метод ради тестов: headless {@code Alert} блокирует + * поток, поэтому тесты переопределяют его без UI. + */ + protected boolean confirmDelete(User user) { var alert = new Alert(Alert.AlertType.CONFIRMATION); alert.setTitle("Удаление пользователя"); alert.setHeaderText(null); diff --git a/src/main/java/com/DesktopApplicationClientJava/controllers/UsersListController.java b/src/main/java/com/DesktopApplicationClientJava/controllers/UsersListController.java index 5caa1e6..4d57c58 100644 --- a/src/main/java/com/DesktopApplicationClientJava/controllers/UsersListController.java +++ b/src/main/java/com/DesktopApplicationClientJava/controllers/UsersListController.java @@ -120,10 +120,19 @@ private void setupTable() { } private void setupRbac() { + // NB: services/getAuthService может быть частичным моком в тестах — остаёмся null-safe: + // getAuthService()==null, getCurrentUser()==null и role==null дают скрытые кнопки без NPE, + // т.к. isAdmin() внутри проверяет current и role на null. var authService = services == null ? null : services.getAuthService(); boolean canCreate = authService != null && authService.isAdmin(); createButton.setVisible(canCreate); createButton.setManaged(canCreate); + + // Кнопка «Ресурсы» доступна только администраторам (как кнопка «Пользователи» на списке + // ресурсов). + boolean isAdmin = authService != null && authService.isAdmin(); + resourcesButton.setVisible(isAdmin); + resourcesButton.setManaged(isAdmin); } // ===== Data loading =====