Dividir "excluir todas as postagens e tópicos permitidos por grupos" em permissões de conteúdo próprio e conteúdo global

Gostaria de sugerir a divisão da configuração de grupos permitidos para excluir todos os posts e tópicos em permissões mais específicas.

No momento, a configuração é ampla: permite que grupos selecionados excluam posts e tópicos criados por outros usuários e também visualizem posts/tópicos excluídos. Isso faz sentido para moderadores ou grupos de moderação confiáveis, mas é excessivamente poderoso para um caso de uso em que desejo apenas que os usuários tenham maior controle sobre seu próprio conteúdo.

Para esclarecer, não me refiro à exclusão permanente/exclusão definitiva do banco de dados.

Estou me referindo principalmente ao comportamento comum de exclusão/histórico de revisões voltado para o usuário final: por exemplo, quando um usuário exclui seu próprio post, se isso deixa o marcador padrão de post excluído, se o conteúdo de edições anteriores permanece acessível por meio da interface do histórico de revisões e se poderia haver uma permissão mais específica para gerenciar isso apenas nos posts de um usuário.

Uma possível divisão poderia ser:

  1. grupos permitidos para excluir seus próprios posts e tópicos
  2. grupos permitidos para excluir todos os posts e tópicos

A primeira configuração aplicaria-se apenas ao conteúdo criado pelo usuário atual. A segunda configuração manteria o comportamento atual mais amplo para grupos confiáveis para excluir conteúdo de outros usuários e visualizar conteúdo excluído.

Isso facilitaria a adoção do princípio de design de funções com privilégios mínimos. Por exemplo, um site pode desejar que usuários TL4/Líderes, ou um grupo confiável personalizado, tenham maior controle sobre a exclusão de seus próprios posts/tópicos, sem conceder também poderes semelhantes aos de moderação sobre o conteúdo de outros usuários.

Percebo que seriam necessárias salvaguardas, especialmente quando a exclusão do primeiro post afetasse um tópico contendo respostas de outros usuários. Nesses casos, o Discourse poderia manter a restrição atual, exigir intervenção de moderador ou limitar a permissão de conteúdo próprio a respostas/tópicos sem respostas.

O pedido principal é por uma permissão de exclusão/histórico de revisões de conteúdo próprio separada da permissão global de exclusão atual, para que os administradores não precisem escolher entre a exclusão suave de usuários comuns e uma permissão muito mais ampla de “pode excluir posts/tópicos de outros usuários”.

Acho que parte da confusão aqui é que pode haver uma distinção entre diferentes verificações de “ver conteúdo excluído”.

Analisando o PostGuardian, um post individual excluído não parece se tornar visível por meio de can_see_post? simplesmente porque o usuário está em delete_all_posts_and_topics_allowed_groups.

Por exemplo, a visibilidade de posts individuais excluídos parece passar 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

Portanto, um usuário não da equipe com nível de confiança 2 (TL2) em delete_all_posts_and_topics_allowed_groups não necessariamente conseguiria abrir/ler o corpo de todo post excluído via can_see_post?.

No entanto, a mesma configuração também é usada aqui:

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

Isso significa que a configuração ainda é conceitualmente mais ampla do que apenas “o autor pode retirar seu próprio conteúdo”. Ela parece ser usada tanto para excluir posts visíveis de outros usuários quanto para certas funcionalidades de visualização/listagem de conteúdo excluído.

Minha preocupação, portanto, não é tanto que “essa configuração definitivamente expõe o corpo de todo post excluído em todos os endpoints”, mas sim que a permissão atual combina vários conceitos:

  1. excluir posts/tópicos de outros usuários;
  2. ver ou listar posts/tópicos excluídos em alguns contextos;
  3. dar aos autores mais controle sobre sua própria pegada digital.

Para o meu caso de uso, eu gostaria apenas do terceiro item.

É por isso que acho que uma configuração específica para o próprio conteúdo seria mais adequada. Ela permitiria que um usuário excluísse/retirasse seus próprios posts/tópicos, sujeito às salvaguardas existentes, sem conceder permissões mais amplas, semelhantes às de moderação, sobre o conteúdo de outros usuários ou a visibilidade de conteúdo excluído.

Para esclarecer o comportamento da interface, gostaria de deixar claro: não estou pedindo que conteúdo excluído se torne visível para usuários comuns.

Para uma permissão de exclusão de conteúdo próprio, o comportamento ideal seria sensível ao espectador:

  • o autor pode ver que sua própria postagem foi retirada/excluída, talvez com a estilização vermelha habitual de postagens excluídas ou em estado colapsado, para que compreenda o que aconteceu e possa recuperá-la se a recuperação for permitida;
  • a equipe/moderadores mantêm qualquer visibilidade de auditoria e moderação adequada;
  • usuários comuns não devem ver nenhum vestígio do conteúdo excluído — sem corpo da postagem, sem histórico de revisões e, idealmente, sem qualquer marcador de postagem excluída.

Portanto, a distinção que estou solicitando é o controle do autor sobre sua própria pegada visível, sem conceder a usuários não pertencentes à equipe visibilidade de conteúdo excluído ou poder global sobre postagens/tópicos de outros usuários.

Uma nuance adicional é o histórico de revisões.

Ao observar o PostRevisor, o histórico de edições é armazenado separadamente por meio do PostRevision, portanto, não estou sugerindo que uma permissão de exclusão de conteúdo próprio deva necessariamente excluir permanentemente os registros de revisão ou remover a capacidade de auditoria.

A permissão que estou imaginando diz mais respeito à visibilidade comum voltada ao usuário: se o autor pode retirar seu próprio post/tópico, se o espaço reservado de post excluído permanece, se usuários comuns podem visualizar o conteúdo de edições anteriores e se a equipe/moderadores mantêm o acesso adequado de auditoria/moderação (por exemplo, por meio do “VER N RESPOSTA OCULTA”).

Portanto, a divisão que estou solicitando não é:

  • “permitir que os usuários apaguem todos os rastros do banco de dados”

mas sim:

  • “permitir que os usuários tenham mais controle sobre seu próprio conteúdo/pegada visível”
  • sem, ao mesmo tempo, conceder-lhes poderes globais para excluir o conteúdo de outros usuários ou visualizar conteúdo excluído de forma geral.