Identificando usuários em múltiplos grupos usando AND em vez de OR?

Criar um novo grupo que contenha os usuários do grupo de destino que têm o nível de confiança 3 é a única maneira que consigo pensar para realizar isso. O Discourse não tem uma regra E que possa ser usada com permissões de segurança de categoria. Uma pergunta semelhante surgiu algumas vezes sobre a criação de uma regra de categoria que exclui membros de um ou mais grupos.

Se o plugin Data Explorer estiver disponível em seu site, você poderá usar uma consulta do Data Explorer que retorne uma lista de todos os usuários do grupo de destino que têm o nível de confiança 3. Se você não estiver lidando com um grande número de usuários, deverá ser capaz de copiar/colar os nomes de usuário retornados pela consulta diretamente no formulário Adicionar Usuários de um grupo. O Discourse parece lidar com a adição de nomes de usuário que já existem em um grupo nesse formulário, portanto, se você executar a consulta periodicamente, poderá continuar copiando os nomes de usuário retornados para o formulário Adicionar Usuários do grupo. Observe que não tenho certeza sobre o número máximo de nomes de usuário que podem ser colados no formulário. Acabei de testá-lo com 80 usuários e isso funciona sem problemas. Além disso, se você tentar colar uma lista exata de usuários duplicados no formulário Adicionar Usuários, o Discourse parece retornar um erro. No entanto, o erro pode ser ignorado.

Aqui está a consulta com a qual testei isso. Você precisa fornecer o nome do grupo, por exemplo, ‘year_2’, antes de executar a consulta.

--[params]
-- string :group_name

SELECT u.username
FROM group_users gu
JOIN groups g ON g.id = gu.group_id
JOIN users u ON u.id = gu.user_id
WHERE g.name = :group_name
AND u.trust_level = 3

Seria possível automatizar o processo acima executando a consulta do Data Explorer via API, e então usando os resultados da solicitação da API para atualizar o grupo. Detalhes sobre isso estão aqui: Execute consultas do Data Explorer com a API do Discourse. Você precisaria então atualizar os membros do grupo via API.

Seria interessante poder executar alguns tipos de ações diretamente nos resultados de uma consulta do Data Explorer. Por exemplo, com uma consulta que retorna uma lista de nomes de usuário, adicionar todos os usuários a um grupo sem ter que passar pela etapa de copiar/colar.

4 curtidas