L'utilisateur ne peut pas créer un nouveau sujet et l'étiqueter lors de la création - Les balises ne sont pas listées

J’ai un utilisateur normal qui est niveau_de_confiance_0 et niveau_de_confiance_1, et j’ai ces paramètres :

groupes autorisés pour étiqueter un sujet : admins, modérateurs, staff, niveau_de_confiance_0
groupes autorisés pour créer un sujet : admins, modérateurs, niveau_de_confiance_1
groupes autorisés pour créer une étiquette : admins, modérateurs, staff

L’utilisateur peut créer les sujets, mais il ne peut pas utiliser les étiquettes lorsqu’il crée le sujet. Il peut utiliser les étiquettes pour la recherche, mais les étiquettes ne sont pas listées lors de la création d’un sujet.

Mes paramètres sont-ils incorrects ? Est-ce que j’oublie quelque chose ? Avec un utilisateur staff ou admin, je peux faire les deux à la fois. Merci pour tout conseil.

2 « J'aime »

Cela a surpris plus d’une personne, mais les administrateurs et les modérateurs peuvent contourner bon nombre des restrictions qui s’appliquent à tout le monde.

Avez-vous d’autres restrictions sur vos tags ? Comme un groupe de tags que seul le groupe X peut utiliser, ou des restrictions que vous avez placées sur des tags dans une catégorie particulière ?

Si vous allez sur une page de tag et cliquez sur la clé à molette des tags (:information_source: pour les non-membres du personnel), cela devrait vous montrer plus d’informations qui pourraient vous aider à identifier les limitations supplémentaires que vous avez placées sur celui-ci. Par exemple, broken ici sur meta :

2 « J'aime »

est-il possible que Discourse ne gère pas le mélange entre trust_level_0 et trust_level_1 lors de la création du sujet et de son étiquetage ?

dois-je ajouter trust_level_1 à ceci :

et ajouter trust_level_0 dans cette ligne :

Toute personne qui est au niveau de confiance_1 est également au niveau de confiance_0 par défaut.

3 « J'aime »

Vous voudrez peut-être permettre à TL0 de pouvoir créer des sujets, en fonction de la configuration de votre site, car les gens s’inscrivent souvent pour poser une question, etc., et pourraient être confus quant à la raison pour laquelle ils ne peuvent pas (renonçant peut-être avant de comprendre).

Mais je ne pense pas que cela explique le problème que vous rencontrez.

Ce problème se produit-il uniquement avec cet utilisateur ? D’autres personnes peuvent-elles attribuer des tags aux sujets avec succès ?

Pourriez-vous donner plus de détails sur la manière dont vous avez configuré vos tags ?

Comme @HAWK l’a dit, toute personne ayant un niveau de confiance trust_level_one est par défaut au niveau de confiance trust_level_0, et c’est pourquoi cela me semble confus. Il y a plus d’un utilisateur avec ce problème. J’ai vérifié les tags qui peuvent être utilisés dans les Catégories dont nous avons besoin.

@JammyDodger, qu’est-ce qui pourrait être intéressant à vérifier dans la configuration de mes tags ?

1 « J'aime »

Les étiquettes sont assez flexibles et peuvent être configurées de plusieurs manières, donc nous pourrions avoir besoin de plus de détails sur la façon dont vous les avez configurées pour fournir des suggestions plus spécifiques.

Cependant, une configuration courante est lorsqu’une catégorie a été configurée pour n’autoriser que certaines étiquettes dans cette catégorie et que l’option « autoriser aussi d’autres étiquettes » n’a pas été cochée. Cela pourrait limiter la catégorie aux étiquettes restreintes et, si celles-ci sont réservées au personnel, cela pourrait empêcher tout autre utilisateur d’utiliser d’autres étiquettes.

Pour faire suite (bien que j’espère que vous l’ayez déjà trouvé :crossed_fingers:), mais Moin a publié un article de dépannage détaillé pour quelque chose de similaire ici :

2 « J'aime »

Salut @JammyDodger et @HAWK . J’ai été empêtré dans d’autres problèmes au travail, mais je suis toujours bloqué avec ça. Z

Ok, j’ai mes Catégories, et dans les paramètres “Tags” de la catégorie j’ai :

Restreindre ces GROUPES de tags à cette catégorie : TAG-GRP1, TAG-GRP2

Quand je vais dans “Gérer les groupes de tags”, j’ai :

TAG-GRP1 :

Nom : TAG-GRP1
Tags dans ce groupe : UNE LISTE DE MES TAGS POUR TAG-GRP1
Tag parent : -
Limiter un tag par sujet de ce groupe (décoché)

TAG-GRP2 :

Nom : TAG-GRP2
Tags dans ce groupe : UNE LISTE DE MES TAGS POUR TAG-GRP2
Tag parent : -
Limiter un tag par sujet de ce groupe (décoché)

Les tags ne sont visibles que pour les groupes suivants : admin, moderators, trust_level_0, trust_level_1

Et quand je vérifie en tant qu’Admin le tag que je veux utiliser lors de la création d’un sujet, je peux voir ceci :

Ce tag appartient à ces groupes : . Il ne peut être utilisé que dans ces catégories : TAG-GRP1, TAG-GRP2

J’ai déjà TL0 et TL1 dans “groupes autorisés à créer des sujets avec des tags” et “groupes autorisés à créer des sujets”. Mais avec un utilisateur normal TL1, je ne peux pas utiliser certains tags.

Avez-vous eu le temps de consulter l’article de dépannage que j’ai lié ci-dessus ? Il est assez complet et pourrait vous orienter dans la bonne direction.

Je ne suis pas sûr que vous ayez copié cela correctement ?

Juste pour information supplémentaire, il n’est pas nécessaire de mettre à la fois TL0 et TL1 dans les paramètres, car tous les membres de TL1 sont aussi TL0 (pensez à TL0 comme « tous les utilisateurs enregistrés »). L’ajout de TL0 suffirait. :+1:

2 « J'aime »

Je consulte votre lien recommandé. Merci.

1 « J'aime »

Bonjour @JammyDodger , Merci pour le lien que vous avez posté, je pensais que cela pourrait m’aider. J’ai déjà vérifié le lien et je pense que mes paramètres sont corrects, la recommandation dans ce post a du sens pour moi, et mes paramètres sont tels que recommandés et j’ai activé pour tester le Autoriser également les autres balises dans les paramètres de catégorie mais malheureusement cela n’a pas résolu mon problème.

Je me demande si je dois redémarrer “quelque chose” lorsque les paramètres de permission changent.

Permettez-moi d’abord de m’excuser d’avoir partagé cette image avec tout le texte masqué, j’espère que vous pourrez comprendre.

Ce sont le nom de la BALISE, le nom des groupes de balises et les catégories où elle est censée être utilisée, mais je ne peux pas les utiliser avec mon utilisateur régulier. Je voudrais savoir s’il est normal d’avoir une icône de cadenas à côté de chaque nom de catégorie.

Merci à tous pour votre aide et vos idées.

C’est normal quand la catégorie n’est pas visible par tout le monde.
Par exemple, voici l’une de mes balises. Vous pouvez voir qu’il y a un cadenas à côté de « Test »


Et voici les paramètres de sécurité de cette catégorie :

« Tout le monde » n’a pas la permission de « voir », c’est pourquoi l’icône de cadenas est affichée à côté de l’insigne de catégorie. Cela indique que cette catégorie n’est pas publique.

Est-ce que cela pourrait avoir un rapport avec le problème que j’ai décrit ?

Dans la mesure où si l’utilisateur ne peut pas accéder à la catégorie, il ne pourra pas la sélectionner lors de la création d’un sujet (et s’il ne peut pas la choisir lors de la création d’un sujet, votre structure de « balise autorisée » ne s’appliquera pas non plus). L’utilisateur fait-il partie d’un groupe qui peut accéder à ces catégories ?

Je pense que si vous n’avez pas encore identifié le conflit, vous devrez peut-être commencer par supprimer certaines restrictions de balises et voir si vous pouvez déterminer exactement où le conflit de permissions se produit.

Avez-vous installé le plugin Data Explorer ? J’ai créé une requête qui m’affiche toutes les limitations pour une balise. Peut-être que cela vous aidera aussi. Vous pourriez même partager les résultats et remplacer les noms de groupes de balises, les noms de balises et les noms de catégories par d’autres mots dans la sortie. Ce sera alors un peu plus facile de vous aider que de comparer des boîtes noires.

Merci @Moin. Oui, je l’ai. J’ai le plugin Data Explorer installé. Désolé encore pour ma réponse tardive.

Ceci est la requête qui m’a aidé à repérer le problème dans ma configuration. Cela fait un moment que je ne l’ai pas utilisée, donc je ne me souviens pas s’il y avait quelque chose que j’avais pensé à améliorer.

Vous pouvez filtrer par tag ou par groupe de tags

-- [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, j’ai essayé la requête dans la version 3.5.0.beta8-dev et elle n’a pas fonctionné. J’ai reçu ce message d’erreur :

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

J’ai cherché cette erreur sur Google et j’ai trouvé que je devrais augmenter statement_timeout, mais cela se produit sur un serveur de production et je n’y connais pas grand-chose en bases de données, PostgreSQL. Je cherche comment faire fonctionner cela sans planter le serveur.

Juste par curiosité, j’ai essayé la requête avec un ami sur un autre forum exécutant la version 3.4.0.beta1-dev et le script s’est exécuté sans aucun problème et semble avoir fonctionné correctement.