User audit view: course-scope delete control can stay "course authoring disabled" incorrectly
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 55/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- react, typescript
- Domain
- authorization, frontend
Research direction
Start with the isCourseAuthoringDisabled branch of ActionsCell in src/authz-module/components/TableCells.tsx, then the createActionsCell(...) call inside the audit page's column useMemo, and check whether useCourseAuthoringFlag is re-evaluated once the flag states load. Done means a course-scope row with the flag on and courses.manage_course_team gets an enabled button labelled "Delete role action" on /authz/user/<username>, while the disabled state still applies when the flag is off.
Written by the indexing model from the issue text.
Description
In the user audit view (/authz/user/<username>), the delete control for a course-scope assignment renders as the "course authoring disabled" button (DisabledCourseActionButton). This happens even when course authoring is enabled for that course and the viewer may manage its team, so a course team member can't be removed from the console.
Measured within a single page load on Tutor main (overhangio/openedx-mfe:22.1.0-main, console bundle matching master), openedx-authz 1.23.0:
GET /api/authz/v1/waffle-flag-states/→{"global": false, "org_overrides": {...}, "course_overrides": {"on": [..., "course-v1:E2E+E2EMV72DYTCW0Z+e2e"], "off": []}}, so the course is explicitly on.POST /api/authz/v1/permissions/validate/me→[{"action": "courses.manage_course_team", "scope": "course-v1:E2E+E2EMV72DYTCW0Z+e2e", "allowed": true}]- The row (role
course_staff, scopecourse-v1:E2E+E2EMV72DYTCW0Z+e2e) renders<span class="d-inline-block"><button aria-label="Delete role action" class="btn-icon btn-icon-light …" disabled>, theisCourseAuthoringDisabledbranch ofActionsCell(src/authz-module/components/TableCells.tsx).
So isCourseEnabled(row.original.scope) evaluates to false for a course in courseOverrides.on. Library-scope rows on the same screen are removable, and the same assignment can be removed through Studio's Course Team endpoint or DELETE /api/authz/v1/roles/users/.
useCourseAuthoringFlag's resolution looks correct for this input. A possible cause is that the cell is rendered with the hook's loading state, in which everything resolves to false, and isn't re-rendered once the flag states arrive. The ActionsCell closure is created through createActionsCell(...) inside the audit page's column useMemo. I haven't stepped through it to confirm.
Impact: Studio's "Roles and Permissions" link leads here, and for a migrated course this is the team surface. Removing a course team member seems impossible from the UI.
Expected: a course whose flag resolves on, viewed by someone with courses.manage_course_team, gets an enabled delete control, as library-scope rows do.
Environment: 2026-10-13, local Tutor main. First seen 2026-09-22. Found by the Open edX end-to-end test suite (BTR TC-00620).
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 13
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 15
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from openedx/frontend-app-admin-console
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
openedx/frontend-app-admin-console#260 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 Half a day Newbie friendliness 75/100
openedx/frontend-app-admin-console#259 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 55/100
openedx/frontend-app-admin-console#257 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 15/100
openedx/frontend-app-admin-console#256 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
openedx/frontend-app-admin-console#247 · 6 comments · 2 reactions ·
Maintainers usually reply within 1 day
All issues in openedx/frontend-app-admin-console
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
simkimsia/netlify-axi#19 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
subhranshudash13-dotcom/Contribo#74 ·
Maintainers usually reply within 1 day
-
enhancement frontend good first issue Stellar Wave trivial
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Godgift-care/sci-healthcare-frontend#166 · 1 comment ·
Maintainers usually reply within 1 day
-
backend good first issue security Stellar Wave trivial
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Godgift-care/sci-healthcare-backend#171 · 1 comment ·
Maintainers usually reply within 1 day