Add a course permission check to ContainerChildrenView
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python
Línea de trabajo
Empieza en rest_api/v1/views/course_index.py, en ContainerChildrenView.get(), y compara su comprobación de acceso con ContainerHandlerView. Añade o actualiza pruebas para un usuario sin acceso al curso y confirma que la solicitud devuelve 403 antes de que get_xblock pueda crear bloques de información del curso. Verifica que un usuario autorizado todavía puede cargar la página de la unidad.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 0
- Forks
- 10
- Merge medio
- 5 d 9 h
- PR fusionados (30 d)
- 24
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de openedx/openedx-authz
-
willow
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
openedx/openedx-authz#597 ·
Los mantenedores suelen responder en 1 día
-
willow
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
openedx/openedx-authz#579 ·
Los mantenedores suelen responder en 1 día
-
Willow release testingPosiblemente ocupada @mariajgrimaldi la tomó hoy. Abiertowillow
openedx/openedx-authz#609 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Update Willow BTR test descriptions for current AuthZ behaviorPosiblemente ocupada @mariajgrimaldi la tomó hoy. Abiertowillow
openedx/openedx-authz#608 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
willow
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
openedx/openedx-authz#605 ·
Los mantenedores suelen responder en 1 día
Todos los issues de openedx/openedx-authz
Issues similares
-
Remove the `pull_request_target` workflow before GitHub blocks itPosiblemente ocupada @jat255 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
IBM/mcp-context-forge#7483 ·
Los mantenedores suelen responder en 2 días
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
[Bug Report]: OpenAI 辅助 API 连通性测试因输出上限仅 1 token 误报“未知错误”Posiblemente ocupada @fjfanjian la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Project-N-E-K-O/N.E.K.O#3640 ·
Los mantenedores suelen responder en 1 día
-
author-page correction
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
acl-org/acl-anthology#10808 · 1 comentario ·
Los mantenedores suelen responder en 1 día