Add a course permission check to ContainerChildrenView
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- authorization, backend-api-design, testing
Direzione di ricerca
Inizia in rest_api/v1/views/course_index.py, in corrispondenza di ContainerChildrenView.get(), e confronta il relativo controllo di accesso con quello di ContainerHandlerView. Aggiungi o aggiorna i test per un utente senza accesso al corso e conferma che la richiesta restituisca 403 prima che get_xblock possa creare blocchi informativi del corso. Verifica che un utente autorizzato possa ancora caricare la pagina dell’unità.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
ContainerChildrenView does not check course access, so any authenticated user can request a container's children. It is backend only and needs a direct API call.
Current Behavior
rest_api/v1/views/course_index.py:125 only applies view_auth_classes(is_authenticated=True). Unlike its sibling ContainerHandlerView, it never calls _get_item_in_course, so no course access check runs. This also happens with the legacy access checks, and was already the case upstream.
Expected Behavior
Only users with view access to the course can list a container's children.
Steps to reproduce
Setup
- A course with at least one unit (vertical).
- A user with no access to that course: authenticated, not course staff, and with no AuthZ role on it.
Steps
-
In Studio, open any unit of the course as a user with access and copy its usage key from the URL, for example
block-v1:Org+Course+Run+type@vertical+block@abc123. -
Log in to Studio as the user with no access to the course.
-
Call the endpoint with that usage key (URL-encoded):
GET /api/contentstore/v1/container/{usage_key_string}/children -
Observe the response.
Result
- Actual:
200, with the container's children in the body. - Expected:
403.
For comparison, GET /api/contentstore/v1/container_handler/{usage_key_string} as the same user returns 403, because it goes through _get_item_in_course.
Acceptance Criteria
-
get()returns 403 for users withoutCOURSES_VIEW_COURSEon the container's course. - The check runs before anything else in
get(). - The unit page keeps working, since
container_handleralready requires the same permission. - Tests are added or updated.
Proposed Solution
At the top of get():
if not user_has_course_permission(
request.user, COURSES_VIEW_COURSE.identifier,
usage_key.course_key, LegacyAuthoringPermission.READ,
):
self.permission_denied(request)
Technical Notes
get_xblock creates course_info blocks on a GET when they do not exist (view_handlers.py:1140), so the permission check has to come before that.
- Lingua principale
- Python
- Stelle
- 0
- Fork
- 10
- Merge medio
- 5g 9h
- PR unite (30g)
- 24
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di openedx/openedx-authz
-
willow
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
openedx/openedx-authz#597 ·
I maintainer di solito rispondono entro 1 giorno
-
willow
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
openedx/openedx-authz#579 ·
I maintainer di solito rispondono entro 1 giorno
-
Willow release testingForse già presa @mariajgrimaldi l’ha presa oggi. Apertawillow
openedx/openedx-authz#609 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Update Willow BTR test descriptions for current AuthZ behaviorForse già presa @mariajgrimaldi l’ha presa oggi. Apertawillow
openedx/openedx-authz#608 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
willow
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
openedx/openedx-authz#605 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di openedx/openedx-authz
Issue simili
-
docs size:S
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
strawberry-graphql/strawberry#4794 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
dataforgoodfr/cetolog#21 ·
-
security_citations_test fails against ecc 2026.11.6: SECURITY.md quotes ecc v2026.11.2's linesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
btclib-org/btclib#2932 ·
I maintainer di solito rispondono entro 1 giorno