El usuario no puede crear un tema nuevo y etiquetarlo durante la creación - Las etiquetas no aparecen

Tengo un usuario normal que es nivel_de_confianza_0 y nivel_de_confianza_1, y tengo estas configuraciones:

grupos permitidos para etiquetas de temas: administradores, moderadores, personal, nivel_de_confianza_0
grupos permitidos para crear temas: administradores, moderadores, nivel_de_confianza_1
grupos permitidos para crear etiquetas: administradores, moderadores, personal

El usuario puede crear los temas, pero no puede usar etiquetas cuando está creando el tema. Puede usar las etiquetas para buscar, pero las etiquetas no se enumeran al crear un tema.

¿Es incorrecta mi configuración? ¿Me falta algo? Con el personal o el usuario administrador puedo hacer ambas cosas a la vez. Gracias por cualquier consejo.

2 Me gusta

Ha pillado a más de uno desprevenido, pero los administradores y moderadores pueden saltarse muchas de las restricciones que se aplican a los demás.

¿Tienes alguna otra restricción aplicada a tus etiquetas? ¿Como un grupo de etiquetas que solo puede usar un grupo específico, o alguna restricción que hayas aplicado a las etiquetas en una categoría en particular?

Si vas a una página de etiqueta y haces clic en la llave inglesa de la etiqueta (:information_source: para no personal) debería mostrarte más información que podría ayudarte a rastrear cualquier limitación adicional que hayas aplicado. Por ejemplo, broken aquí en meta:

2 Me gusta

¿Podría ser posible que Discourse no esté manejando la mezcla entre trust_level_0 y trust_level_1 al crear el tema y etiquetarlo?

¿Debería añadir trust_level_1 a esto:

y añadir trust_level_0 en esta línea:

Cualquier persona que esté en trust_level_1 también está en trust_level_0 por defecto.

3 Me gusta

Es posible que desees permitir que TL0 pueda crear temas, dependiendo de la configuración de tu sitio, ya que las personas suelen registrarse para hacer una pregunta, etc., y podrían confundirse por qué no pueden (posiblemente renunciando antes de averiguarlo).

Pero no creo que esto explique el problema que estás teniendo.

¿Este problema sucede solo con este usuario? ¿Otras personas pueden etiquetar temas con éxito?

¿Podrías dar más detalles sobre cómo has configurado tus etiquetas?

Como dijo @HAWK, cualquier usuario que esté en trust_level_one por defecto también está en trust_level_0, y por esa razón me resulta confuso. Hay más de un usuario con este problema. Verifiqué las etiquetas que se pueden usar en las Categorías que necesitamos.

@JammyDodger, ¿qué podría ser interesante verificar en la configuración de mis etiquetas?

1 me gusta

Las etiquetas son bastante flexibles y pueden configurarse de muchas maneras diferentes, por lo que es posible que necesitemos más detalles sobre cómo has configurado las tuyas para proporcionar sugerencias más específicas.

Aunque una configuración común es cuando se ha configurado una categoría para que solo se puedan usar ciertas etiquetas en esa categoría y no se ha marcado la opción de ‘permitir otras etiquetas también’. Eso podría limitar la categoría a solo las etiquetas restringidas y, si esas son solo para el personal, esto podría impedir que cualquier otra persona utilice otras etiquetas.

Solo para dar seguimiento (aunque espero que ya lo hayas encontrado :crossed_fingers:), pero Moin publicó una entrada de solución de problemas exhaustiva para algo similar aquí:

2 Me gusta

Hola @JammyDodger y @HAWK . He estado enredado con otros problemas en el trabajo, pero sigo atascado con esto. Z

Ok, tengo mis Categorías, y en la configuración de “Etiquetas” de la categoría tengo:

Restringir estos GRUPOS de etiquetas a esta categoría: TAG-GRP1, TAG-GRP2

Cuando voy a “Administrar grupos de etiquetas” tengo:

TAG-GRP1:

Nombre: TAG-GRP1
Etiquetas en este grupo: UNA LISTA DE MIS ETIQUETAS PARA TAG-GRP1
Etiqueta principal: -
Limitar una etiqueta por tema de este grupo (desmarcado)

TAG-GRP2:

Nombre: TAG-GRP2
Etiquetas en este grupo: UNA LISTA DE MIS ETIQUETAS PARA TAG-GRP2
Etiqueta principal: -
Limitar una etiqueta por tema de este grupo (desmarcado)

Las etiquetas son visibles solo para los siguientes grupos: admin, moderators, trust_level_0, trust_level_1

Y cuando reviso como Administrador la etiqueta que quiero usar al crear un tema puedo ver esto:

Esta etiqueta pertenece a estos grupos: . Solo se puede usar en estas categorías: TAG-GRP1, TAG-GRP2

Ya tengo TL0 y TL1 en “grupos permitidos de temas de etiquetas” y “grupos permitidos para crear temas”. Pero con un usuario regular TL1 no puedo usar algunas etiquetas.

¿Has podido consultar la publicación de solución de problemas que enlacé arriba? Es bastante exhaustiva y podría ayudarte a encontrar la dirección correcta.

¿No estoy seguro de haberlo copiado con precisión?

Solo como información adicional, no es necesario incluir TL0 y TL1 en ninguna configuración, ya que todos los miembros de TL1 también son TL0 (piensa en TL0 como ‘todos los usuarios registrados’). Sería suficiente con añadir solo TL0. :+1:

2 Me gusta

Revisando tu enlace recomendado. Gracias.

1 me gusta

Hola @JammyDodger, Gracias por el enlace que publicaste, pensé que podría ayudarme. Ya revisé el enlace y creo que mi configuración está bien, la recomendación en esa publicación tiene sentido para mí, y mi configuración está como se recomienda y habilité para probar También permitir otras etiquetas en la configuración de Categoría, pero desafortunadamente no resolvió mi problema. Me pregunto si necesito reiniciar “algo” cuando cambian la configuración de permisos.

Primero, permítanme disculparme por compartir esta imagen con todo el texto bloqueado, espero que puedan entender.

Esos son el nombre de la ETIQUETA, el nombre de los grupos de etiquetas y las categorías donde se supone que se debe usar, pero no puedo usar con mi usuario habitual. Me gustaría saber si es normal tener un icono de candado cerca de cada nombre de categoría.

Gracias a todos por su ayuda e ideas.

Es normal cuando la categoría no es visible para todos.
Por ejemplo, esta es una de mis etiquetas. Puedes ver que hay un candado junto a “Test”


Y estas son las configuraciones de seguridad de esa categoría:

“Everyone” no tiene permiso de “ver”, por eso se muestra el icono de candado junto a la insignia de la categoría. Indica que esta categoría no es pública.

¿Podría esto tener algo que ver con el problema que describí?

En la medida en que si el usuario no puede acceder a la categoría, entonces no podrá seleccionarla al crear un tema (y si no pueden elegirla al crear un tema, entonces la estructura de ‘etiqueta permitida’ tampoco se activará). ¿El usuario forma parte de un grupo que puede acceder a esas categorías? Creo que si aún no has identificado cuál es el conflicto, es posible que necesites empezar a eliminar algunas de las restricciones de etiquetas y ver si puedes acotar exactamente dónde está ocurriendo el conflicto de permisos.

¿Tienes instalado el plugin Data Explorer? Creé una consulta que me muestra todas las limitaciones de una etiqueta. Quizás eso también te ayude. Incluso podrías compartir los resultados y reemplazar los nombres de los grupos de etiquetas, los nombres de las etiquetas y los nombres de las categorías con otras palabras en la salida. Entonces será un poco más fácil ayudarte que comparar cajas negras.

Gracias @Moin. Sí, lo tengo. Tengo instalado el plugin Data Explorer. Disculpas de nuevo por la tardía respuesta.

Esta es la consulta que me ayudó a detectar el problema en mi configuración. Ha pasado algún tiempo desde que la usé, así que no recuerdo si había algo que pensara en mejorar.

Puedes filtrar por etiqueta o grupo de etiquetas

-- [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, probé la consulta en la versión 3.5.0.beta8-dev y no funcionó. Recibí este mensaje de error:

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

Busqué este error en Google y encontré que debería aumentar statement_timeout, pero esto está sucediendo en un servidor de producción y no sé mucho sobre bases de datos, PostgreSQL. Estoy viendo cómo hacerlo funcionar sin estropear el servidor.

Solo por curiosidad, probé la consulta con un amigo en otro foro que ejecutaba la versión 3.4.0.beta1-dev y el script se ejecutó sin problemas y parece que funcionó bien.