Repository navigation
Backport RBAC (openedx-authz) bug fixes to release/verawood #513
Description
Context
Since release/verawood was cut, several RBAC (openedx-authz) fixes have been merged into master. They correct wrongful 403s, crashes with platform-wide (glob) role assignments, and inconsistent permission gates. These fixes are not yet in release/verawood. Verawood is still on openedx-authz==1.21.0, while master is already on 1.23.0.
Goal
Backport to release/verawood the RBAC bug-fix PRs already merged into master, so Verawood doesn't carry permission regressions that are already resolved.
Scope
Includes: permission/role/authz fixes (Studio, Content Libraries, Instructor Dashboard) and the reverts that correct a previous backport.
Excludes:
- New RBAC features, unless a fix needs them as a dependency (see "To evaluate").
- Refactors, automated bumps, and test or lint fixes.
Backport criteria
- Use
git cherry-pick -xfrom themastercommit. - If a fix depends on code or an
openedx-authzversion that Verawood doesn't have, backport the dependency first or drop the PR. - Each backport PR targets
release/verawood, references the original PR, and passes the relevant tests. - One PR per commit, so each change can be tested on its own. The title keeps the original title with the PR number replaced by
[verawood]. The earlier all-in-one PR (#39198) was closed in favor of these.
Backport PRs
All are drafts against release/verawood. In the "Tested" column, ⬜ means pending and ✅ means validated on its own. The status icon of each PR (draft, open, merged) is shown by GitHub next to its link.
Independent (PR created)
| Backport PR | Original PR | Description | Tested |
|---|---|---|---|
| openedx/openedx-platform#39282 | #39001 | Upgrade openedx-authz to 1.23.0 |
⬜ |
| openedx/openedx-platform#39283 | #38973 | Revert "Cannot rerun courses - authz role assignment expects rerun to already exist" | ⬜ |
| openedx/openedx-platform#39284 | #38984 | RoleCache legacy compat layer ignores platform-wide glob role assignments |
⬜ |
| openedx/openedx-platform#39285 | #39007 | Split read vs write authz checks for advanced settings | ⬜ |
| openedx/openedx-platform#39286 | #39008 | Split read vs write authz checks for certificates | ⬜ |
| openedx/openedx-platform#39287 | #39010 | Split read vs write authz checks for group configurations | ⬜ |
| openedx/openedx-platform#39288 | #39009 | Split read vs write authz checks for library updates | ⬜ |
| openedx/openedx-platform#39289 | #38986 | Course Auditor gets 403 navigating to a course unit | ⬜ |
| openedx/openedx-platform#39290 | #39075 | Course editor gets 403 copying a unit to the clipboard | ⬜ |
| openedx/openedx-platform#39291 | #39113 | Add authz validation to course optimizer tool | ⬜ |
| openedx/openedx-platform#39292 | #39144 | Align reindex link with authz permissions | ⬜ |
| openedx/openedx-platform#39293 | #39013 | Authz edit permission gate for XBlock component card action menu | ⬜ |
| openedx/openedx-platform#39294 | #39112 | Make can_tag_object's course check authorization-service aware |
⬜ |
| openedx/openedx-platform#39295 | #39251 | UnboundLocalError in BulkRoleCache.prefetch for authz compat roles |
⬜ |
Depend on a parent PR (branch ready, PR not created yet)
These do not apply without their parent. Their PR is opened once the parent is merged.
| Original PR | Description | Depends on |
|---|---|---|
| #38980 | Platform-wide glob role assignments crash get_orgs_for_user/has_org_for_user |
openedx/openedx-platform#39284 |
| #39055 | Allow Course Admin/Staff/Editor to sync library updates into a course | openedx/openedx-platform#39288 |
| #39050 | Gate xblock action menu on authz edit/manage_tags permissions |
openedx/openedx-platform#39293 |
| #39196 | Split authz view and manage permissions in ProctoredExamSettingsView |
openedx/openedx-platform#39285 |
Dependencies between PRs
- #39284 -> #38980
- #39288 -> #39055
- #39293 -> #39050
- #39285 -> #39196
- All the
split read vs writePRs and anything usingview_*permissions requireopenedx-authz1.23.0 (#39282).
Resolved decisions
- Revert #38973: included (revert: Cannot rerun courses - authz role assignment expects rerun to already exist [verawood] openedx-platform#39283). Verawood has #38840 as #38858, so it needs the revert.
openedx-authzbump: included (chore: upgrade openedx-authz==1.23.0 [verawood] openedx-platform#39282). Required by #38973 (>= 1.22.0) and theview_*permission PRs (1.23.0).- Features needed as dependencies: #39013, #39007, #39008, #39009, #39010 and #39113 were included. #39013 and #39009 are real dependencies of #39050 and #39055. #39112 was also included (it is a fix needed for the XBlock menu gate).
Not included yet
- #38721 – add missing org scope support in instructor dashboard
- #39073
- #39107
- #39197
- Gradebook fails with
UnboundLocalErrorinBulkRoleCache.prefetch(authz compat roles loop) #514
Tasks
- Verify that each PR applies on
release/verawoodand identify dependencies. - Resolve the
openedx-authzbump and revert #38973. - Create the backport PRs (one per commit; the 4 dependent ones are pending their parent).
- Validate tests on each PR and merge, parents first.
- Open the 4 dependent PRs once their parent is merged.
- Decide on #38721, #39073, #39107 and #39197.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsIn Progress
Activity