fix(targets): ask whether a table is readable as a query (release/1.2 port of #69) #70

Merged
james.maes merged 1 commits from fix/target-read-asked-as-query-1.2 into release/1.2 2026-11-12 17:22:57 +00:00
Owner

Port of #69 to the 1.2 release line. A table whose permission checker recognises a read by the type of the action input was not treated as a collaboration target, so recents and favorites answered Not Found for it. The readable-table question is now asked as a query, the same question a list screen asks. Reviewed independently on #69; full build green on this branch.

🤖 Generated with Claude Code

Port of #69 to the 1.2 release line. A table whose permission checker recognises a read by the type of the action input was not treated as a collaboration target, so recents and favorites answered Not Found for it. The readable-table question is now asked as a query, the same question a list screen asks. Reviewed independently on #69; full build green on this branch. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
james.maes added 1 commit 2026-11-12 17:21:03 +00:00
fix(targets): ask whether a table is readable as a query, not with an untyped input
maven / build (push) Successful in 7m15s
build / maven (push) Successful in 7m15s
a1c856b8be
TargetResolver.canReadTable asked PermissionsHelper.hasTablePermission with a
bare AbstractActionInput. Core hands a table's custom permission checker the
action input and not the permission asked, so a checker that tells a read
from a write by the input's type (a query, a get or a count reads; anything
else is refused) refused the question. For such a table every recents and
favorites call answered "Not found" for people the checker lets read it:
the UI sends POST /recents on every list and record screen, so each of them
showed "Resource not found POST /qqq/v1/qbit/collaboration/recents (HTTP
404)".

The read is now asked with a QueryInput for the table, the read it stands
for; ParentRecordAccess already asks with a GetInput. Who may read a table
does not change: the checker still decides, and a person it refuses is
still answered "Not found" (RecentsServiceTest
.tableWithAnInputTypedPermissionCheckerIsATarget, which failed before with
QNotFoundException on the first call).

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
james.maes merged commit 08654c7e0d into release/1.2 2026-11-12 17:22:57 +00:00
Sign in to join this conversation.