Skip to content

Conversation

@qqmyers
Copy link
Member

@qqmyers qqmyers commented Jul 7, 2025

What this PR does / why we need it: Tracks the history of all RoleAssignment changes on a dataset or file, making it easy to see when roles were assigned and by whom, whether a user has had permission on an item in the past, etc. The history of role assignments is available in the (JSF) UI and via API, e.g.
image

The API supports JSON and CSV outputs.

All three cases are handled: assignments on a collection, assignments on a dataset, assignments to one or more files in a dataset.

Which issue(s) this PR closes:

  • Closes #

Special notes for your reviewer:

  • At least through the UI, it looks like you can only assign the filedownloader role to files. The history mechanism should work if there are other roles possible.
  • To simplify the display, granting access to multiple files will group all files where access is granted/revoked at the same time by the same user into one line in the display. Same time currently means within the same minute.
  • Logging and displaying the history are controlled by a feature flag, the functionality is off by default.
  • The download buttons in the UI use the API, requesting the CSV version via an Accept "text/csv" header. This required a) using a signedUrl to avoid requiring the experimental api-session-auth flag (this could be a general mechanism to allow the JSF UI to call the api as needed), and B) using Javascript to be able to send the header and write a file (versus just having a link to the raw URL - the browser would call that and show the json output on the screen instead of downloading csv).
  • I created some IT tests (as well as local tests) - I don't know how to run them as part of the Jenkins build as they'd require the flag to be true (which I assume we don't want as the default).

Suggestions on how to test this: Turn on the flag, assign/revoke various roles, check that the history makes sense. The displays are ordered by revocation date (unrevoked first), then assignment date. Note that either the assign or revoke dates and assigner/revoker fields can be null - the revoked ones because the assignments are active, the assign one when the assignment was made before RA history functionality was turned on.

Does this PR introduce a user interface change? If mockups are available, please link/include them here: see image above.

Is there a release notes update needed for this change?: included

Additional documentation: API and UI docs included, feature flag documented.

@qqmyers qqmyers removed their assignment Sep 12, 2025
Copy link
Member

@pdurbin pdurbin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't test the code but API tests are passing (skipped for this new feature, since it's off by default) and I'm happy with how it looks. Approved.

@github-project-automation github-project-automation bot moved this from In Review 🔎 to Ready for QA ⏩ in IQSS Dataverse Project Sep 12, 2025
@pdurbin pdurbin removed their assignment Sep 12, 2025
@ofahimIQSS ofahimIQSS self-assigned this Sep 12, 2025
@ofahimIQSS ofahimIQSS moved this from Ready for QA ⏩ to QA ✅ in IQSS Dataverse Project Sep 12, 2025
@pdurbin pdurbin moved this from QA ✅ to In Review 🔎 in IQSS Dataverse Project Sep 12, 2025
@pdurbin pdurbin modified the milestones: 6.8, 6.9 Sep 12, 2025
@cmbz cmbz added the FY26 Sprint 6 FY26 Sprint 6 (2025-09-10 - 2025-09-24) label Sep 14, 2025
@ofahimIQSS ofahimIQSS removed their assignment Sep 16, 2025
@scolapasta scolapasta moved this from In Review 🔎 to Reviewed but Frozen ❄️ in IQSS Dataverse Project Sep 16, 2025
@cmbz cmbz added the FY26 Sprint 7 FY26 Sprint 7 (2025-09-24 - 2025-10-08) label Sep 24, 2025
@pdurbin pdurbin moved this from Reviewed but behind develop ⬅️ to Ready for QA ⏩ in IQSS Dataverse Project Sep 29, 2025
@ofahimIQSS ofahimIQSS self-assigned this Sep 29, 2025
@ofahimIQSS ofahimIQSS moved this from Ready for QA ⏩ to QA ✅ in IQSS Dataverse Project Sep 29, 2025
@cmbz cmbz added the FY26 Sprint 8 FY26 Sprint 8 (2025-10-08 - 2025-10-22) label Oct 8, 2025
@cmbz cmbz added the FY26 Sprint 9 FY26 Sprint 9 (2025-10-22 - 2025-11-05) label Oct 23, 2025
@ofahimIQSS
Copy link
Contributor

need an update here to resolve conflicts

@pdurbin pdurbin added the Status: Merge Conflicts Merge conflicts must be resolved. label Oct 23, 2025
@ofahimIQSS ofahimIQSS removed the Status: Merge Conflicts Merge conflicts must be resolved. label Oct 24, 2025
@ofahimIQSS
Copy link
Contributor

looks good to me - merging

@ofahimIQSS ofahimIQSS merged commit 53bff4c into IQSS:develop Oct 24, 2025
17 checks passed
@github-project-automation github-project-automation bot moved this from QA ✅ to Merged 🚀 in IQSS Dataverse Project Oct 24, 2025
@ofahimIQSS ofahimIQSS removed their assignment Oct 24, 2025
@scolapasta scolapasta moved this from Merged 🚀 to Done 🧹 in IQSS Dataverse Project Oct 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

FY26 Sprint 5 FY26 Sprint 5 (2025-08-27 - 2025-09-10) FY26 Sprint 6 FY26 Sprint 6 (2025-09-10 - 2025-09-24) FY26 Sprint 7 FY26 Sprint 7 (2025-09-24 - 2025-10-08) FY26 Sprint 8 FY26 Sprint 8 (2025-10-08 - 2025-10-22) FY26 Sprint 9 FY26 Sprint 9 (2025-10-22 - 2025-11-05) Size: 10 A percentage of a sprint. 7 hours.

Projects

Status: Done 🧹

Development

Successfully merging this pull request may close these issues.

6 participants