Utenti che hanno accesso a un argomento in una categoria protetta

Potrei aver bisogno di aiuto. Non capisco un tubo di SQL.

Faccio l’amministratore di un forum per il mio sindacato. Sono un rappresentante eletto, ma non ricopro un ruolo dirigenziale. Il motivo per cui amministro il forum è che ho già esperienza con Discourse: l’ho configurato per modernizzare la nostra comunicazione interna (collaborazione di squadra) e, al momento, sono l’unico (su 20 membri) a sapere davvero come fare qualcosa di più avanzato a livello tecnico “dietro le quinte”, oltre a usare un builder per creare siti web. Il punto è che il nostro gruppo è esperto nell’uso quotidiano della tecnologia, ma non sa come funziona “dietro le quinte”.

Poiché questo è uno spazio di lavoro per tutti noi, inclusa la dirigenza, ho creato alcune categorie dedicate a loro in cui non dovrei poter spiare. (Chiamiamola “al di sopra del mio stipendio”).

Dato che non esiste un modo reale per nascondere i contenuti a un amministratore, ho creato un componente di tema con CSS per:

  • nascondere i pulsanti dei messaggi nei profili utente
  • nascondere il pulsante “impersona” nei profili amministratore
  • nascondere l’anteprima dei topic nella pagina delle categorie
  • nascondere l’elenco dei topic all’interno delle categorie a tutti
    • Aggiungere poi la visibilità degli elenchi dei topic ai membri di un gruppo (principale).

In sintesi, sto creando una serie di registri e tracce di controllo disponibili nel caso volessero verificare che non stia spiando.

  1. Possono controllare nei log del sito se ho mai modificato o disabilitato quel componente di tema senza che ne fossero a conoscenza; possono chiedere il motivo e vedere i dettagli.
  2. Se ho mai usato la funzione di impersonificazione o di visualizzazione dei messaggi, anche questo apparirà nei log.

In pratica, se mai manipolassi il CSS che ho scritto per nascondere queste cose, loro potrebbero vederlo e chiedermi di spiegarmi.

  1. Se mi aggiungessi al loro gruppo in modo che i contenuti diventino visibili a me, nei log del gruppo apparirebbe la mia aggiunta o rimozione dal gruppo. Possono chiedermi di spiegarmi.

Di cosa ho bisogno:
Se mai visualizzassi la pagina con i fogli di stile CSS disabilitati, potrei vedere gli URL dei topic. Ovviamente, potrei aprire i topic direttamente. Ciò che desidero è una query di Data Explorer che loro (il team esecutivo, che tutti ricevono l’accesso amministratore) possano eseguire di tanto in tanto, mostrando i topic visualizzati all’interno di una categoria da qualsiasi utente non membro del gruppo “esecutivo”.

Non hanno idea che questo sia possibile, ma voglio coprire ogni evenienza. Voglio rendere questa soluzione futura, oltre il mio mandato. Per quanto possibile con gli strumenti disponibili.

Quindi, ancora una volta, ho bisogno di una query di Data Explorer che:

  1. Se l’utente non fa parte del gruppo “esecutivo”
  2. Allora visualizzi i topic visualizzati dall’utente (o dagli utenti) nella categoria “EB” (o con ID categoria: 34)

Ciò, unito all’effetto “bianco” applicato tramite CSS, crea una traccia documentale sufficiente a dimostrare che se qualcuno (io o chiunque altro non facente parte del team esecutivo che in futuro possa ricevere l’accesso amministratore) ha visualizzato i topic all’interno di quella categoria senza farne parte, ha dovuto compiere uno sforzo intenzionale per farlo, configurandosi come una vera e propria spiata.

Qualcuno può aiutarmi con questo?

Penso che dovresti aprire un nuovo argomento a riguardo…

Ma puoi provare (e imparare SQL) :wink:

Punto 1:

-- [params]
-- string :gname = executive
-- string :uname = SidV
SELECT u.username, g.id as "group id", g.name
FROM group_users gu, users u, groups g
WHERE g.id = gu.group_id
AND u.id = gu.user_id
AND g.name ILIKE :gname
AND u.username ILIKE :uname

Punto 2

Non riesco a capire il tuo punto… di cosa hai bisogno?

Controlla l’elenco delle query e prova ad adattare una query alle tue esigenze.

3 Mi Piace

In sostanza, scrivi una query per visualizzare qualsiasi argomento letto nella categoria 1 o 2 da qualsiasi utente non assegnato al gruppo A.

Utenti che hanno accesso a un argomento in una categoria protetta

Questa query restituirà tutti gli topic_users (utenti che hanno visualizzato o pubblicato in un argomento) che non sono membri del gruppo specificato dal parametro :group_name della query, per gli argomenti nelle categorie che includono tale gruppo nelle impostazioni di sicurezza. Questo può essere utilizzato per trovare gli amministratori che hanno visualizzato un argomento in una categoria a cui sono stati aggiunti permessi di gruppo.

--[params]
-- string :group_name

WITH allowed_users AS (
SELECT user_id
FROM group_users gu
JOIN groups g
ON g.id = gu.group_id
WHERE g.name = :group_name
),
group_categories AS (
SELECT category_id
FROM category_groups cg
JOIN groups g
ON g.id = cg.group_id
WHERE g.name = :group_name
)

SELECT
tu.user_id,
tu.topic_id,
tu.last_visited_at::date
FROM topic_users tu
JOIN topics t
ON t.id = tu.topic_id
WHERE t.category_id IN (SELECT category_id FROM group_categories)
AND tu.user_id NOT IN (SELECT user_id FROM allowed_users)
ORDER BY t.category_id
4 Mi Piace