[DT-4061] Gate study PATCH on ownership of the study - #3050
Open
otchet-broad wants to merge 1 commit into
Open
Conversation
otchet-broad
marked this pull request as ready for review
September 8, 2026 20:30
otchet-broad
requested review from
fboulnois and
rushtong
and removed request for
a team
September 8, 2026 20:30
Requires creator/custodian/admin ownership for PATCH
/api/dataset/study/{studyId}, matching what the registration PUT path
already enforces. The @RolesAllowed gate on the endpoint only says the
caller holds a study-editing role somewhere in DUOS, and a publicly
visible study passes the read-visibility check for everyone, so read
visibility cannot stand in for write authorization.
This is a behavior tightening, and the only change in the DT-4061 stack
that can break a live UI flow: a chairperson or data submitter who is not
the study's creator or custodian now receives 403 where a PATCH of a
publicly visible study previously succeeded. Worth confirming against how
the UI gates the study edit form before merging.
Split out of otchet-dt-4061-study-visibility-authz so it can be held or
reverted without blocking the rest of the stack. It is a sibling of that
branch rather than part of the chain — nothing else depends on it.
No migration.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
otchet-broad
force-pushed
the
otchet-dt-4061-study-patch-ownership
branch
from
September 8, 2026 21:58
c1dc841 to
9359c86
Compare
otchet-broad
force-pushed
the
otchet-dt-4061-study-visibility-authz
branch
from
September 8, 2026 21:58
1f57fc7 to
0233a80
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Base: branch 1 · 3 files, +41/-3 · Migration: no · UI impact: yes — the one to scrutinize
Requires creator/custodian/admin ownership for
PATCH /api/dataset/study/{studyId}, matching what the registration PUT pathalready enforces. The
@RolesAllowedgate on the endpoint only says thecaller holds a study-editing role somewhere in DUOS, and a publicly visible
study passes the read-visibility check for everyone, so read visibility
cannot stand in for write authorization.
This is a behavior tightening: a chairperson or data submitter who is not
the study's creator or custodian now receives 403 where a PATCH of a
publicly visible study previously succeeded. Worth confirming against how
the UI gates the study edit form before merging.
Deliberately a sibling of branch 1 rather than a link in the chain. Nothing
else in DT-4061 depends on it, so it can be held for a longer discussion,
revised, or dropped without blocking the other seven PRs. Small enough to
review in one sitting: the resource hunk, one new test, and the OpenAPI 403
documentation.
Depends on: branch 1 (shares the
StudyResourcePATCH method).Where this sits in the DT-4061 stack
otchet-dt-3990-study-ratings-pi-detailswas too large to review meaningfully(95 files, +8168), so it was split into eight PRs. This PR targets
otchet-dt-4061-study-visibility-authz,not
develop, so its diff shows only its own work.otchet-dt-4061-study-visibility-authzdevelopotchet-dt-4061-study-patch-ownership← this PRotchet-dt-4061-study-visibility-authzotchet-dt-4061-study-pi-detailsotchet-dt-4061-study-visibility-authzotchet-dt-4061-study-commentsotchet-dt-4061-study-pi-detailsotchet-dt-4061-study-dar-metricsotchet-dt-4061-study-commentsotchet-dt-4061-study-recommendationsotchet-dt-4061-study-dar-metricsotchet-dt-4061-study-asset-fieldsotchet-dt-4061-study-recommendationsotchet-dt-4061-study-asset-endpointsotchet-dt-4061-study-asset-fieldsBranch 1b is a sibling rather than a link in the chain: nothing depends on it,
so it can be held or dropped without blocking the others. Land the numbered
chain in order — merging out of order, or squash-merging, will require rebasing
the descendants.
The split is verified lossless: branch 7 plus 1b reproduces the original branch
exactly, apart from five
scripts/verify-study-*.shhelper scripts that weredropped at the author's request.
./mvnw test-compilepasses on each branchindependently.
🤖 Generated with Claude Code