Separar 'eliminar todas las publicaciones y temas permitidos por grupos' en permisos de contenido propio y contenido global

Me gustaría sugerir dividir la configuración de “grupos permitidos para eliminar todos los mensajes y temas” en permisos más específicos.

Actualmente, la configuración es muy amplia: permite a los grupos seleccionados eliminar mensajes y temas creados por otros usuarios, además de ver los mensajes/temas eliminados. Esto tiene sentido para moderadores o grupos de moderación de confianza, pero es demasiado poderoso para un caso de uso donde solo quiero que los usuarios tengan un control más fuerte sobre su propio contenido.

Para aclarar, no me refiero a la eliminación permanente o eliminación definitiva de la base de datos.

Principalmente estoy preguntando sobre el comportamiento habitual de eliminación y del historial de revisiones para los usuarios: por ejemplo, cuando un usuario elimina su propio mensaje, si deja el marcador de posición habitual de mensaje eliminado, si el contenido de ediciones anteriores permanece accesible a través de la interfaz del historial de revisiones, y si podría existir un permiso más específico para gestionar esto solo en los mensajes de un usuario.

Una posible división podría ser:

  1. grupos permitidos para eliminar sus propios mensajes y temas
  2. grupos permitidos para eliminar todos los mensajes y temas

La primera configuración solo se aplicaría al contenido creado por el usuario actual. La segunda configuración mantendría el comportamiento actual más amplio para los grupos de confianza autorizados a eliminar contenido de otros usuarios y ver contenido eliminado.

Esto facilitaría seguir un diseño de roles con el principio de mínimo privilegio. Por ejemplo, un sitio podría querer que los usuarios TL4/Líder, o un grupo de confianza personalizado, tengan más control sobre la eliminación de sus propios mensajes/temas sin otorgarles al mismo tiempo un poder similar al de la moderación sobre el contenido de otros usuarios.

Soy consciente de que sería necesario implementar salvaguardas, especialmente cuando eliminar el primer mensaje afectaría a un tema que contiene respuestas de otros usuarios. En esos casos, Discourse podría mantener la restricción actual, requerir intervención de un moderador o limitar el permiso de contenido propio a respuestas o temas sin respuestas.

La solicitud principal es contar con un permiso de eliminación/historial de revisiones para contenido propio que sea independiente del permiso global de eliminación actual, para que los administradores no tengan que elegir entre la eliminación suave habitual para usuarios y un permiso mucho más amplio de “puede eliminar mensajes/temas de otros usuarios”.

Creo que parte de la confusión aquí radica en que puede haber una distinción entre diferentes comprobaciones de «ver contenido eliminado».

Al examinar PostGuardian, un post individual eliminado no parece hacerse visible mediante can_see_post? simplemente porque el usuario pertenezca a delete_all_posts_and_topics_allowed_groups.

Por ejemplo, la visibilidad de un post eliminado individual parece pasar por:

def can_see_deleted_post?(post)
  return false if !post.trashed?
  return false if @user.anonymous?
  return true if is_staff?
  post.deleted_by_id == @user.id && @user.has_trust_level?(TrustLevel[4])
end

Por lo tanto, un usuario no perteneciente al personal con nivel de confianza 2 (TL2) que esté en delete_all_posts_and_topics_allowed_groups no necesariamente podrá abrir o leer el cuerpo de cada post eliminado mediante can_see_post?.

Sin embargo, la misma configuración también se utiliza aquí:

def can_see_deleted_posts?(category = nil)
  is_category_group_moderator?(category) ||
    @user.in_any_groups?(SiteSetting.delete_all_posts_and_topics_allowed_groups_map)
end

Esto significa que la configuración sigue siendo conceptualmente más amplia que solo «el autor puede retirar su propio contenido». Parece utilizarse tanto para eliminar posts visibles de otros usuarios como para ciertas funcionalidades de visibilidad o listado de posts eliminados.

Por lo tanto, mi preocupación no es tanto «esta configuración expone definitivamente el cuerpo de cada post eliminado en cada punto de acceso», sino que el permiso actual combina varios conceptos:

  1. eliminar posts/temas de otros usuarios;
  2. ver o listar posts/temas eliminados en ciertos contextos;
  3. otorgar a los autores un mayor control sobre su propia huella.

Para mi caso de uso, solo desearía el tercer punto.

Es por eso que creo que una configuración específica para el contenido propio sería más limpia. Podría permitir que un usuario elimine o retire sus propios posts/temas, sujeto a las salvaguardas existentes, sin otorgar permisos más amplios similares a los de moderación sobre el contenido de otros usuarios o la visibilidad del contenido eliminado.

Para aclarar el comportamiento de la interfaz de usuario, lo que deseo es lo siguiente: no estoy pidiendo que el contenido eliminado sea visible para los usuarios ordinarios.

Para un permiso de eliminación de contenido propio, el comportamiento ideal sería sensible al espectador:

  • el autor puede ver que su propia publicación ha sido retirada/eliminada, quizás con el estilo habitual de publicación eliminada en rojo o en estado colapsado, para que entienda qué sucedió y pueda recuperarla si la recuperación está permitida;
  • el personal/moderadores conservan la visibilidad de auditoría y moderación que corresponda;
  • los usuarios ordinarios no deben ver ningún rastro del contenido eliminado: ni el cuerpo de la publicación, ni el historial de revisiones y, idealmente, ningún marcador de posición de publicación eliminada.

Por lo tanto, la distinción que solicito es el control del autor sobre su propia huella visible, sin otorgar a los usuarios que no son del personal visibilidad del contenido eliminado ni poder global sobre las publicaciones/temas de otros usuarios.

Un matiz adicional es el historial de revisiones.

Al examinar PostRevisor, el historial de ediciones se almacena por separado mediante PostRevision, por lo que no estoy sugiriendo que un permiso de eliminación de contenido propio deba necesariamente borrar físicamente los registros de revisión o eliminar la capacidad de auditoría.

El permiso que imagino se refiere más bien a la visibilidad habitual para el usuario: si el autor puede retirar su propia publicación o tema, si permanece el marcador de posición de la publicación eliminada, si los usuarios ordinarios pueden ver el contenido de ediciones anteriores y si el personal o los moderadores conservan el acceso de auditoría o moderación que corresponda (por ejemplo, mediante la opción «VER N RESPUESTA OCULTA»).

Por lo tanto, la distinción que solicito no es:

  • «permitir que los usuarios borren todos los rastros de la base de datos»

sino más bien:

  • «permitir que los usuarios tengan mayor control sobre su propio contenido visible o huella digital»
  • sin otorgarles al mismo tiempo poderes globales para eliminar el contenido de otros usuarios o ver contenido eliminado de forma general.