Benutzer kann kein neues Thema erstellen und es während der Erstellung taggen - Die Tags werden nicht aufgelistet

Ich habe einen normalen Benutzer, der Vertrauensstufe 0 (trust_level_0) und Vertrauensstufe 1 (trust_level_1) hat, und ich habe diese Einstellungen:

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

Der Benutzer kann die Themen erstellen, aber er kann keine Tags verwenden, wenn er das Thema erstellt. Er kann die Tags für die Suche verwenden, aber die Tags werden bei der Erstellung eines Themas nicht aufgelistet.

Ist meine Einstellung falsch? Übersehe ich etwas? Mit einem Mitarbeiter- oder Admin-Benutzer kann ich beides gleichzeitig tun. Danke für jeden Rat.

2 „Gefällt mir“

Es hat schon einige Leute überrascht, aber Administratoren und Moderatoren können viele der Einschränkungen umgehen, die für alle anderen gelten.

Haben Sie weitere Einschränkungen für Ihre Tags festgelegt? Zum Beispiel eine Tag-Gruppe, die nur eine bestimmte Gruppe verwenden kann, oder Einschränkungen, die Sie für Tags in einer bestimmten Kategorie festgelegt haben?

Wenn Sie zu einer Tag-Seite gehen und auf den Tag-Schraubenschlüssel (:information_source: für Nicht-Mitarbeiter) klicken, sollten Sie weitere Informationen erhalten, die Ihnen helfen können, zusätzliche Einschränkungen zu finden, die Sie für diesen Tag festgelegt haben. Z.B. broken hier auf Meta:

2 „Gefällt mir“

Könnte es sein, dass Discourse die Mischung zwischen trust_level_0 und trust_level_1 beim Erstellen des Themas und Taggen nicht richtig verarbeitet?

Sollte ich trust_level_1 zu diesem hinzufügen:

und trust_level_0 zu dieser Zeile hinzufügen:

Jeder, der sich in trust_level_1 befindet, ist auch standardmäßig in trust_level_0.

3 „Gefällt mir“

Sie möchten möglicherweise TL0 die Erlaubnis geben, Themen zu erstellen, abhängig von Ihrer Website-Konfiguration, da sich Nutzer oft anmelden, um eine Frage zu stellen usw., und verwirrt sein könnten, warum sie es nicht können (was sie möglicherweise dazu bringt, aufzugeben, bevor sie es herausfinden).

Aber ich denke nicht, dass dies das Problem erklärt, das Sie haben.

Passiert dieses Problem nur bei diesem Nutzer? Können andere Personen erfolgreich Tags hinzufügen?

Könnten Sie weitere Details dazu geben, wie Sie Ihre Tags eingerichtet haben?

Wie @HAWK gesagt hat, ist jeder, der sich im Vertrauensstufe_eins befindet, standardmäßig auch in Vertrauensstufe_0, und aus diesem Grund ist das für mich verwirrend. Es gibt mehr als einen Benutzer mit diesem Problem. Ich habe die Tags überprüft, die in den Kategorien verwendet werden können, die wir benötigen.

@JammyDodger, was könnte interessant sein, um es in meiner Tag-Konfiguration zu überprüfen?

1 „Gefällt mir“

Tags sind ziemlich flexibel und können auf viele verschiedene Weisen konfiguriert werden, daher benötigen wir möglicherweise weitere Details dazu, wie Sie Ihre eingerichtet haben, um spezifischere Vorschläge machen zu können.

Ein gängiges Beispiel ist, wenn eine Kategorie so eingerichtet wurde, dass nur bestimmte Tags in dieser Kategorie erlaubt sind und die Option „auch andere Tags erlauben“ nicht aktiviert wurde. Das könnte die Kategorie auf die eingeschränkten Tags beschränken, und wenn diese nur für Mitarbeiter zugänglich sind, könnte das verhindern, dass andere Benutzer andere Tags verwenden.

Nur zur Nachverfolgung (obwohl Sie es hoffentlich bereits gefunden haben :crossed_fingers:), aber Moin hat hier einen ausführlichen Beitrag zur Fehlerbehebung für etwas Ähnliches veröffentlicht:

2 „Gefällt mir“

Hey @JammyDodger und @HAWK. Ich war bei der Arbeit mit anderen Problemen beschäftigt, aber ich stecke immer noch fest. Z

Ok, ich habe meine Kategorien, und in den “Tags”-Einstellungen der Kategorie habe ich:

Beschränke diese Tag-GRUPPEN auf diese Kategorie: TAG-GRP1, TAG-GRP2

Wenn ich zu “Tag-Gruppen verwalten” gehe, habe ich:

TAG-GRP1:

Name: TAG-GRP1
Tags in dieser Gruppe: EINE LISTE MEINER TAGS FÜR TAG-GRP1
Übergeordnetes Tag: -
Limit one tag per topic from this group (nicht aktiviert)

TAG-GRP2:

Name: TAG-GRP2
Tags in dieser Gruppe: EINE LISTE MEINER TAGS FÜR TAG-GRP2
Übergeordnetes Tag: -
Limit one tag per topic from this group (nicht aktiviert)

Tags sind nur für die folgenden Gruppen sichtbar: admin, moderators, trust_level_0, trust_level_1

Und wenn ich als Admin den Tag überprüfe, den ich beim Erstellen eines Themas verwenden möchte, sehe ich Folgendes:

Dieser Tag gehört zu diesen Gruppen: . Er kann nur in diesen Kategorien verwendet werden: TAG-GRP1, TAG-GRP2

Ich habe bereits TL0 und TL1 in “Tag-Thema erlaubte Gruppen” und “Thema erstellen erlaubte Gruppen”. Aber mit einem normalen Benutzer TL1 kann ich einige Tags nicht verwenden.

Konnten Sie den Fehlerbehebungsbeitrag, den ich oben verlinkt habe, schon überprüfen? Er ist ziemlich gründlich und könnte Ihnen in die richtige Richtung weisen.

Ich bin mir nicht sicher, ob Sie das richtig kopiert haben?

Nur zur zusätzlichen Information: Es ist nicht notwendig, sowohl TL0 als auch TL1 in den Einstellungen anzugeben, da alle Mitglieder von TL1 auch TL0 sind (denken Sie an TL0 als „alle registrierten Benutzer“). Die Angabe von nur TL0 würde ausreichen. :+1:

2 „Gefällt mir“

Ich schaue mir Ihren empfohlenen Link an. Danke.

1 „Gefällt mir“

Hallo @JammyDodger , danke für den Link, den du gepostet hast, ich dachte, er könnte mir helfen. Ich habe den Link bereits überprüft und denke, meine Einstellungen sind in Ordnung. Die Empfehlung in diesem Beitrag ergibt für mich Sinn, und meine Einstellungen sind wie empfohlen. Ich habe zum Testen auch Auch andere Tags zulassen in den Kategorieeinstellungen aktiviert, aber leider hat das mein Problem nicht gelöst. Ich frage mich, ob ich “etwas” neu starten muss, wenn sich die Berechtigungseinstellungen ändern.

Zuerst möchte ich mich dafür entschuldigen, dass ich dieses Bild mit dem gesamten blockierten Text teile. Ich hoffe, Sie haben dafür Verständnis.

Dies sind die TAG-Namen, die Namen der Tag-Gruppen und die Kategorien, in denen sie verwendet werden sollen, aber ich kann sie mit meinem normalen Benutzer nicht verwenden. Ich möchte wissen, ob es normal ist, ein Vorhängeschloss-Symbol neben jedem Kategorienamen zu haben.

Vielen Dank für all Ihre Hilfe und Ideen.

Es ist normal, wenn die Kategorie nicht für jeden sichtbar ist.
Zum Beispiel ist dies eines meiner Tags. Sie können sehen, dass neben „Test“ ein Schloss ist


Und dies sind die Sicherheitseinstellungen dieser Kategorie:

„Jeder“ hat keine „sehen“-Berechtigung, deshalb wird das Schlosssymbol neben dem Kategorie-Badge angezeigt. Es zeigt an, dass diese Kategorie nicht öffentlich ist.

Hat das vielleicht etwas mit dem Problem zu tun, das ich beschrieben habe?

Wenn der Benutzer die Kategorie nicht aufrufen kann, kann er sie bei der Erstellung eines Themas nicht auswählen (und wenn er sie bei der Erstellung eines Themas nicht auswählen kann, greift auch Ihre Struktur für ‘erlaubte Tags’ nicht). Gehört der Benutzer zu einer Gruppe, die Zugriff auf diese Kategorien hat? Ich glaube, wenn Sie noch nicht herausgefunden haben, worin der Konflikt besteht, müssen Sie vielleicht einige der Tag-Beschränkungen entfernen und sehen, ob Sie genau eingrenzen können, wo der Berechtigungskonflikt auftritt.

Haben Sie das Data Explorer Plugin installiert? Ich habe eine Abfrage erstellt, die mir alle Einschränkungen für ein Tag anzeigt. Vielleicht hilft Ihnen das auch. Sie könnten die Ergebnisse sogar teilen und Gruppennamen, Tag-Namen und Kategorienamen in der Ausgabe durch andere Wörter ersetzen. Dann ist es etwas einfacher, Ihnen zu helfen, als schwarze Kisten zu vergleichen.

Danke @Moin. Ja, das habe ich. Ich habe das Data Explorer Plugin installiert. Entschuldigen Sie nochmals die späte Antwort.

Dies ist die Abfrage, die mir geholfen hat, das Problem in meiner Konfiguration zu erkennen. Es ist schon eine Weile her, seit ich sie verwendet habe, daher erinnere ich mich nicht, ob es etwas gab, das ich verbessern wollte.

Sie können nach Tag oder Tag-Gruppe filtern

-- [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, ich habe die Abfrage in Version 3.5.0.beta8-dev ausprobiert und sie hat nicht funktioniert. Ich habe diese Fehlermeldung erhalten:

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

Ich habe diese Fehlermeldung gegoogelt und festgestellt, dass ich statement_timeout erhöhen sollte, aber das passiert auf einem Produktionsserver und ich kenne mich nicht gut mit Datenbanken, PostgreSQL, aus. Ich versuche herauszufinden, wie ich es zum Laufen bringe, ohne den Server zu beschädigen.

Nur aus Neugier habe ich die Abfrage mit einem Freund in einem anderen Forum ausprobiert, der Version 3.4.0.beta1-dev verwendet, und das Skript lief ohne Probleme und schien gut zu funktionieren.