L'utente non può creare un nuovo argomento e taggarlo durante la creazione - I tag non sono elencati

Ho un utente normale che è trust_level_0 e trust_level_1, e ho queste impostazioni:

tag topic allowed groups: admins, moderators, staff, trust_level_0
create topic allowed groups: admins, moderators, trust_level_1
create tag allowed groups: admins, moderators, staff

L’utente può creare i topic, ma non può usare i tag quando sta creando il topic. Può usare i tag per la ricerca, ma i tag non sono elencati quando si crea un topic.

La mia impostazione è errata? Mi manca qualcosa? Con l’utente staff o admin posso fare entrambe le cose contemporaneamente. Grazie per qualsiasi consiglio.

2 Mi Piace

Ha tratto in inganno più di qualche persona, ma gli amministratori e i moderatori possono aggirare molte delle restrizioni che si applicano a tutti gli altri.

Hai altre restrizioni applicate ai tuoi tag? Come un gruppo di tag che solo un certo gruppo può usare, o delle restrizioni che hai applicato ai tag in una particolare categoria?

Se vai a una pagina di tag e fai clic sulla chiave inglese del tag (:information_source: per i non staff) dovrebbe mostrarti maggiori informazioni che potrebbero aiutarti a rintracciare eventuali limitazioni aggiuntive che hai applicato. Ad esempio broken qui su meta:

2 Mi Piace

è possibile che Discourse non gestisca il mix tra trust_level_0 e trust_level_1 durante la creazione dell’argomento e la sua etichettatura?

Dovrei aggiungere trust_level_1 a questo:

e aggiungere trust_level_0 in questa riga:

Chiunque si trovi in trust_level_1 è anche in trust_level_0 di default.

3 Mi Piace

Potresti voler consentire a TL0 di poter creare argomenti, a seconda della configurazione del tuo sito, poiché le persone si registreranno spesso per fare una domanda, ecc., e potrebbero essere confuse sul motivo per cui non possono farlo (potenzialmente rinunciando prima di capirlo).

Ma non credo che questo spiegherebbe il problema che stai riscontrando.

Il problema si verifica solo con questo utente? Altri utenti riescono a taggare con successo gli argomenti?

Potresti fornire qualche dettaglio in più su come hai configurato i tuoi tag?

Come ha detto @HAWK, chiunque sia a trust_level_one è per impostazione predefinita in trust_level_0, e per questo motivo mi risulta confuso. Ci sono più di un utente con questo problema.Ho controllato i tag che si possono usare nelle categorie di cui abbiamo bisogno.

@JammyDodger, cosa potrebbe essere interessante verificare nelle impostazioni dei miei tag?

1 Mi Piace

I tag sono abbastanza flessibili e possono essere configurati in molti modi diversi, quindi potremmo aver bisogno di ulteriori dettagli su come li hai impostati per fornire suggerimenti più specifici.

Una configurazione comune è quando una categoria è impostata per consentire l’uso di determinati tag solo in quella categoria e l’opzione ‘consenti altri tag’ non è selezionata. Questo potrebbe limitare la categoria solo ai tag restrittivi e, se questi sono riservati allo staff, potrebbe impedire a qualsiasi altro utente di usare altri tag.

Solo per un aggiornamento (anche se spero tu l’abbia già trovato :crossed_fingers:), ma Moin ha pubblicato un post di risoluzione dei problemi approfondito per qualcosa di simile qui:

2 Mi Piace

Ciao @JammyDodger e @HAWK. Sono stato alle prese con altri problemi al lavoro, ma sono ancora bloccato con questo. Z

Ok, ho le mie Categorie e nelle impostazioni “Tag” della categoria ho:

Limita questi GRUPPI di tag a questa categoria: TAG-GRP1, TAG-GRP2

Quando vado su “Gestisci gruppi di tag” ho:

TAG-GRP1:

Nome: TAG-GRP1
Tag in questo gruppo: UN ELENCO DEI MIEI TAG PER TAG-GRP1
Tag padre: -
Limita un tag per argomento da questo gruppo (non selezionato)

TAG-GRP2:

Nome: TAG-GRP2
Tag in questo gruppo: UN ELENCO DEI MIEI TAG PER TAG-GRP2
Tag padre: -
Limita un tag per argomento da questo gruppo (non selezionato)

I tag sono visibili solo ai seguenti gruppi: admin, moderators, trust_level_0, trust_level_1

E quando controllo come Admin il tag che voglio usare quando creo un argomento posso vedere questo:

Questo tag appartiene a questi gruppi: . Può essere utilizzato solo in queste categorie: TAG-GRP1, TAG-GRP2

Ho già TL0 e TL1 in “gruppi autorizzati per argomenti tag” e “gruppi autorizzati per la creazione di argomenti”. Ma con un utente normale TL1 non posso usare alcuni tag.

Sei riuscito a dare un’occhiata al post sulla risoluzione dei problemi che ho linkato sopra? È piuttosto completo e potrebbe aiutarti a trovare la giusta direzione.

Non sono sicuro che tu l’abbia copiato accuratamente?

Solo per tua informazione, non è necessario inserire sia TL0 che TL1 in nessuna impostazione poiché tutti i membri di TL1 sono anche TL0 (pensa a TL0 come ‘tutti gli utenti registrati’). Sarebbe sufficiente aggiungere solo TL0. :+1:

2 Mi Piace

Sto controllando il link che mi hai consigliato. Grazie.

1 Mi Piace

Ciao @JammyDodger, grazie per il link che hai postato, pensavo potesse aiutarmi. Ho già controllato il link e penso che le mie impostazioni siano a posto, la raccomandazione in quel post ha senso per me, e le mie impostazioni sono come raccomandato e ho abilitato per testare Also allow other tags nelle impostazioni della Categoria ma sfortunatamente non ha risolto il mio problema. Mi chiedo se devo riavviare “qualcosa” quando le impostazioni dei permessi cambiano.

Prima di tutto, vorrei scusarmi per aver condiviso questa immagine con tutto il testo bloccato, spero possiate capire.

Questi sono il nome del TAG, il nome dei gruppi di tag e le categorie in cui dovrebbe essere utilizzato, ma non posso usarli con il mio utente normale. Vorrei sapere se è normale avere un’icona a forma di lucchetto vicino a ogni nome di categoria.

Grazie a tutti per il vostro aiuto e le vostre idee.

È normale quando la categoria non è visibile a tutti.
Ad esempio, questo è uno dei miei tag. Puoi vedere che c’è un lucchetto accanto a “Test”


E queste sono le impostazioni di sicurezza di quella categoria:

“Tutti” non hanno il permesso di “vedere”, ecco perché l’icona del lucchetto viene mostrata accanto al badge della categoria. Indica che questa categoria non è pubblica.

Potrebbe questo avere a che fare con il problema che ho descritto?

In modo tale che se l’utente non può accedere alla categoria, non potrà selezionarla quando crea un argomento (e se non può sceglierla quando crea un argomento, allora anche la tua struttura di ‘tag consentiti’ non verrà attivata). L’utente fa parte di un gruppo che può accedere a quelle categorie?

Penso che se non hai ancora capito qual è il conflitto, potresti dover iniziare a rimuovere alcune delle restrizioni sui tag e vedere se riesci a individuare esattamente dove sta avvenendo il conflitto di permessi.

Hai installato il plugin Data Explorer? Ho creato una query che mi mostra tutte le limitazioni per un tag. Forse ti aiuterà anche. Potresti persino condividere i risultati e sostituire i nomi dei gruppi di tag, i nomi dei tag e i nomi delle categorie con altre parole nell’output. Sarà un po’ più facile aiutarti rispetto al confronto di scatole nere.

Grazie @Moin. Sì, ce l’ho. Ho installato il plugin Data Explorer. Scusa ancora per la risposta tardiva.

Questa è la query che mi ha aiutato a individuare il problema nella mia configurazione. È passato un po’ di tempo da quando l’ho usata, quindi non ricordo se c’era qualcosa che pensavo di migliorare.

Puoi filtrare per tag o gruppo di tag

-- [params]
-- null string :tag_name
-- null string :tag_group

WITH allowed_tags AS (
  SELECT ct.category_id, t.id AS tag_id
  FROM category_tags ct
  JOIN tags t ON t.id = ct.tag_id
  UNION
  SELECT ctg.category_id, tgm.tag_id
  FROM category_tag_groups ctg
  JOIN tag_group_memberships tgm ON tgm.tag_group_id = ctg.tag_group_id
),

restricted_categories AS (
  SELECT c.id, c.name
  FROM categories c
  WHERE c.allow_global_tags = FALSE
    AND (
      EXISTS (SELECT 1 FROM category_tags ct WHERE ct.category_id = c.id)
      OR EXISTS (SELECT 1 FROM category_tag_groups ctg WHERE ctg.category_id = c.id)
    )
),

all_tag_category_combinations AS (
  SELECT t.id AS tag_id, t.name AS tag_name, rc.id AS category_id, rc.name AS category_name
  FROM tags t
  CROSS JOIN restricted_categories rc
  WHERE t.target_tag_id IS NULL
),

not_allowed_tags AS (
  SELECT atcc.tag_id, atcc.category_id, atcc.category_name
  FROM all_tag_category_combinations atcc
  LEFT JOIN allowed_tags al
    ON al.tag_id = atcc.tag_id AND al.category_id = atcc.category_id
  WHERE al.tag_id IS NULL
)

SELECT
  main.id AS tag_id,
  main.name AS tag_name,
  COALESCE(STRING_AGG(DISTINCT syn.name, ', '), '') AS synonyms,

  tg.id AS tag_group_id,
  COALESCE(parent_tag.name, '') AS parent_tag_name,
  CASE WHEN tg.one_per_topic THEN 'true' ELSE '' END AS one_tag_per_topic,

  COALESCE(
    STRING_AGG(
      DISTINCT
      CASE
        WHEN crtg.min_count IS NOT NULL THEN crtg_cat.name || ' (' || crtg.min_count || ')'
        ELSE NULL
      END,
      ', '
    ),
    ''
  ) AS required_in_categories_with_min,

  COALESCE(STRING_AGG(DISTINCT ctg_cat.name, ', '), '') AS tag_group_limited_to_category,
  COALESCE(STRING_AGG(DISTINCT ctags_cat.name, ', '), '') AS tag_limited_to_category,
  COALESCE(STRING_AGG(DISTINCT nat.category_name, ', '), '') AS not_allowed_in_categories,

  CASE
    WHEN COUNT(DISTINCT g.name) > 0 THEN COALESCE(STRING_AGG(DISTINCT g_use.name, ', '), '')
    ELSE ''
  END AS use_limited_to,
  COALESCE(STRING_AGG(DISTINCT g.name, ', '), '') AS view_only_groups

FROM tags AS main
LEFT JOIN tags AS syn ON syn.target_tag_id = main.id
LEFT JOIN tag_group_memberships AS tgm ON tgm.tag_id = main.id
LEFT JOIN tag_groups AS tg ON tg.id = tgm.tag_group_id
LEFT JOIN tags AS parent_tag ON parent_tag.id = tg.parent_tag_id
LEFT JOIN tag_group_permissions tgp ON tgp.tag_group_id = tg.id AND tgp.permission_type = 3
LEFT JOIN groups g ON g.id = tgp.group_id

LEFT JOIN category_required_tag_groups AS crtg ON crtg.tag_group_id = tg.id
LEFT JOIN categories AS crtg_cat ON crtg.category_id = crtg_cat.id
LEFT JOIN category_tag_groups AS ctg ON ctg.tag_group_id = tg.id
LEFT JOIN categories AS ctg_cat ON ctg.category_id = ctg_cat.id
LEFT JOIN category_tags AS ctags ON ctags.tag_id = main.id
LEFT JOIN categories AS ctags_cat ON ctags.category_id = ctags_cat.id
LEFT JOIN not_allowed_tags AS nat ON nat.tag_id = main.id
LEFT JOIN tag_group_permissions tgp_use ON tgp_use.tag_group_id = tg.id AND tgp_use.permission_type = 1
LEFT JOIN groups g_use ON g_use.id = tgp_use.group_id

WHERE
  main.target_tag_id IS NULL AND
  (
    :tag_name IS NULL OR
    LOWER(main.name) LIKE LOWER('%' || :tag_name || '%') OR
    LOWER(syn.name) LIKE LOWER('%' || :tag_name || '%')
  ) AND
  (
    :tag_group IS NULL OR
    LOWER(tg.name) LIKE LOWER('%' || :tag_group || '%')
  )

GROUP BY
  main.id, main.name, tg.id, tg.name, parent_tag.name, tg.one_per_topic
ORDER BY main.name, tag_group_id

@Moin, ho provato la query nella versione 3.5.0.beta8-dev e non ha funzionato. Ho ricevuto questo messaggio di errore:

PG::QueryCanceled: ERROR:  canceling statement due to statement timeout

Ho cercato questo errore su Google e ho scoperto che dovrei aumentare statement_timeout, ma questo sta accadendo su un server di produzione e non so molto di DB, PostgreSQL. Sto cercando di capire come farlo funzionare senza danneggiare il server.

Solo per curiosità, ho provato la query con un amico su un altro forum che utilizzava la versione 3.4.0.beta1-dev e lo script è stato eseguito senza problemi e sembrava funzionare bene.