From 1d2c2b0029ff2ca96164052e2e3018362db1dbaa Mon Sep 17 00:00:00 2001 From: James Maes Date: Fri, 16 Oct 2026 09:18:26 -0500 Subject: [PATCH] feat(home): move Setup to admin and omit unpermitted home content The Data Analysis home showed the engine Setup card (max rows, sampling, cache, scheduler state) to every SAVED_READ user, and rendered "Unavailable: READ permission required." shells for unreadable groups. - dataAnalysisSetup is off the home widget list; it stays registered, gated to data_analysis.admin with DenyBehavior.HIDDEN. Hosts place DataAnalysisQBitProducer.SYSTEM_WIDGETS on their Admin area. - Each home data widget requires READ on its table and is omitted from metadata otherwise. - Overview groups the user cannot read are left out of the payload; no "Unavailable" text remains on the home. Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 1 + .../DataAnalysisQBitProducer.java | 9 ++ .../dataanalysis/app/DataAnalysisHome.java | 63 ++++++++++--- .../app/TableReadWidgetPermissionChecker.java | 88 +++++++++++++++++++ .../dataanalysis/DataAnalysisHomeTest.java | 44 ++++++++-- 5 files changed, 186 insertions(+), 19 deletions(-) create mode 100644 src/main/java/com/kingsrook/qbits/dataanalysis/app/TableReadWidgetPermissionChecker.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 50992f6..82c5d8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Following [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [Semantic ### Fixed - QBit metadata now reports the Maven artifact version, including release versions, from a filtered build resource. +- The Data Analysis home no longer shows the engine Setup card or "Unavailable: READ permission required." shells. Setup is admin-only (hidden from everyone else) and off the home; hosts place `DataAnalysisQBitProducer.SYSTEM_WIDGETS` on their Admin area. Home widgets the user cannot read are omitted from metadata, and unreadable groups are left out of the overview. ### Added diff --git a/src/main/java/com/kingsrook/qbits/dataanalysis/DataAnalysisQBitProducer.java b/src/main/java/com/kingsrook/qbits/dataanalysis/DataAnalysisQBitProducer.java index 7a390e3..3ee68d3 100644 --- a/src/main/java/com/kingsrook/qbits/dataanalysis/DataAnalysisQBitProducer.java +++ b/src/main/java/com/kingsrook/qbits/dataanalysis/DataAnalysisQBitProducer.java @@ -23,8 +23,10 @@ package com.kingsrook.qbits.dataanalysis; import java.io.IOException; import java.io.InputStream; +import java.util.List; import java.util.Properties; import com.kingsrook.qbits.dataanalysis.api.DataAnalysisApi; +import com.kingsrook.qbits.dataanalysis.app.DataAnalysisHome; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.model.metadata.MetaDataProducerMultiOutput; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; @@ -45,6 +47,13 @@ public class DataAnalysisQBitProducer implements QBitMetaDataProducer