Skip to content

Backport RBAC (openedx-authz) bug fixes to release/verawood #513

Open

Description

@BryanttV

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 -x from the master commit.
  • If a fix depends on code or an openedx-authz version 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 write PRs and anything using view_* permissions require openedx-authz 1.23.0 (#39282).

Resolved decisions

Not included yet

Tasks

  • Verify that each PR applies on release/verawood and identify dependencies.
  • Resolve the openedx-authz bump 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions