Identificare gli utenti in più gruppi usando AND invece di OR?

Creare un nuovo gruppo che contenga gli utenti del gruppo di destinazione che hanno il livello di fiducia 3 è l’unico modo che mi viene in mente per raggiungere questo obiettivo. Discourse non ha una regola AND che può essere utilizzata con le autorizzazioni di sicurezza delle categorie. Una domanda simile è sorta alcune volte sulla creazione di una regola di categoria che esclude i membri di uno o più gruppi.

Se il plugin Data Explorer è disponibile sul tuo sito, potresti utilizzare una query di Data Explorer che restituisce un elenco di tutti gli utenti del gruppo di destinazione che hanno il livello di fiducia 3. Se non hai a che fare con un numero enorme di utenti, dovresti essere in grado di copiare/incollare i nomi utente restituiti dalla query direttamente nel modulo Aggiungi Utenti di un gruppo. Discourse sembra gestire l’aggiunta di nomi utente già esistenti in un gruppo in quel modulo, quindi se esegui la query periodicamente, dovresti essere in grado di continuare a copiare i nomi utente restituiti nel modulo Aggiungi Utenti del gruppo. Nota, non sono sicuro del numero massimo di nomi utente che possono essere incollati nel modulo. Ho appena provato con 80 utenti e funziona senza problemi. Inoltre, se tenti di incollare un elenco esatto di duplicati di utenti nel modulo Aggiungi Utenti, Discourse sembra restituire un errore. L’errore può comunque essere ignorato.

Ecco la query che ho testato. Devi fornire il nome del gruppo, ad esempio ‘year_2’, prima di eseguire la query.

--[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

Sarebbe possibile automatizzare il processo sopra descritto eseguendo la query di Data Explorer tramite l’API, quindi utilizzando i risultati della richiesta API per aggiornare il gruppo. I dettagli sono qui: Esegui query Data Explorer con l’API Discourse. Dovresti quindi aggiornare i membri del gruppo tramite l’API.

Sarebbe interessante poter eseguire alcuni tipi di azioni direttamente sui risultati di una query di Data Explorer. Ad esempio, con una query che restituisce un elenco di nomi utente, aggiungere tutti gli utenti a un gruppo senza dover passare attraverso il passaggio di copia/incolla.

4 Mi Piace