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 =====