El post de medios incrustados permite conflictos de grupos con el flujo de moderación de posts: ¡desocultar! falla con ActiveRecord::RecordInvalid

Existe un conflicto entre “Grupos permitidos para publicaciones con contenido multimedia incrustado” y el flujo de trabajo para mostrar publicaciones ocultas.

Si una publicación es creada por un usuario que no está en los grupos permitidos para contenido multimedia y luego se oculta (mediante indicadores), cuando un moderador edita la publicación oculta y añade contenido multimedia, al intentar mostrar la publicación fallará con:

ActiveRecord::RecordInvalid
Validation failed: Lo sentimos, no puedes incrustar elementos multimedia en una publicación.

El proceso para mostrar la publicación vuelve a ejecutar la validación de contenido multimedia utilizando los permisos del autor original, no los del moderador, lo que provoca que no se pueda mostrar.


Pasos para Reproducir

  1. Configurar Grupos permitidos para publicaciones con contenido multimedia incrustado, excluyendo a los usuarios de baja confianza.
  2. Usar un usuario no incluido en los grupos permitidos para crear una publicación.
  3. Hacer que la publicación sea oculta por indicadores del sistema. (No estoy totalmente seguro aquí, ¿parece que las publicaciones solo se pueden ocultar mediante indicadores y no manualmente por el personal? El personal puede ocultar temas pero no publicaciones individuales. Por favor, corríjanme si me equivoco).
  4. Un moderador edita la publicación oculta e inserta contenido multimedia (imágenes/videos).
  5. Intentar mostrar la publicación (ya sea en la interfaz de usuario o mediante post.unhide! en la consola de Rails).
  6. La operación falla con:

ActiveRecord::RecordInvalid Validation failed: Lo sentimos, no puedes incrustar elementos multimedia en una publicación.

1 me gusta

@kris.kotlarek ¿qué opinas sobre

Creo que es seguro, específicamente porque hay un punto de llamada que todavía espera validación: PostRevisor#remove_flags_and_unhide_post así que el parámetro extra nos permite darle un poco más de seguridad.

Dicho esto, estas rutas de código son muy complicadas… así que vale la pena una revisión cuidadosa.

1 me gusta