¿Es este un caso de uso para campos personalizados de usuario?

He estado intentando averiguar cómo permitir que los usuarios creen subforos que funcionen como canales de Slack.

Una de las sugerencias fue utilizar etiquetas. Así, un usuario podría crear una etiqueta (o una aplicación que yo construya podría hacerlo a través de la API), y la página de esa etiqueta funcionaría como la página del subforo.

La pregunta entonces es cómo hacer que solo los miembros del subforo puedan publicar en ese subforo. En otras palabras, solo los miembros de ese subforo podrían tener la etiqueta del subforo vinculada a sus publicaciones.

¿Existe alguna forma de usar “campos personalizados de usuario” para lograr esto? De alguna manera, ¿para marcar a un usuario como autorizado a publicar con una etiqueta determinada?

No termino de entender para qué sirven los campos personalizados de usuario, así que espero poder comprender más al respecto.

Creo que las etiquetas no incluyen permisos a nivel de usuario. Quizás quieras revisar las categorías en su lugar.

Discourse utiliza grupos y categorías para controlar el acceso al contenido. Consulta el video en este tema para obtener más detalles: Cómo usar la configuración de seguridad de categorías para crear categorías privadas

Gracias por las respuestas, chicos. Estoy de acuerdo en que las categorías parecen la forma más sencilla de hacerlo. Sin embargo, estos serían subforos que los usuarios podrían crear en gran cantidad. Podría haber cientos o más (los subforos son una pieza clave de la aplicación, por lo que crecerán a medida que crezca la base de usuarios).

Me han dicho que crear cientos o miles de categorías será un gran problema, por lo que debería buscar otras soluciones. ¿Tienen otras sugerencias? Estoy dispuesto a desarrollar una aplicación separada que interactúe con la API. Lo principal que quiero de Discourse es su excelente funcionalidad de publicaciones, respuestas y etiquetas.

Lo que quieres crear no es algo para lo que está orientado Discourse.

Buscas una plataforma tipo Reddit/Discord, donde las personas puedan entrar y crear subreddits/servidores que “poseen”, mientras tú mantienes todo el control y la monetización de la plataforma.

Discourse apunta a ser justo lo contrario, permitiendo que cada subreddit/servidor/gremio sea su propio sitio, posea sus propios datos y funcione en su propia URL.

Aunque puedes modificar mucho un proyecto de código abierto, te recomendaría usar algo más cercano a lo que buscas.

Agradezco que este no sea el caso de uso habitual, pero definitivamente me gustaría encontrar una manera de hacerlo con Discourse, dado lo increíble que es Discourse. Y puedo acercarme bastante: creo una etiqueta mediante la API y envío a los usuarios a la página de la etiqueta, que actúa como la página de un subforo. La pieza clave que me falta es la capacidad de limitar qué usuarios pueden publicar con esa etiqueta.

Discord no serviría para estos propósitos debido a las limitaciones que tienen al integrarse con aplicaciones. No estoy familiarizado con cómo podría integrar Reddit con una aplicación.

¿Me estás sugiriendo que realmente podría hacer que esto funcione con Reddit, o solo te referías a que ese es el “tipo” de funcionalidad que tengo en mente?

En cualquier caso, el beneficio clave de Discourse, desde mi perspectiva, es que es un foro, no un chat. Y la funcionalidad tipo foro es lo que busco aquí. No he visto alternativas a Discourse que pudieran funcionar en ese sentido, pero definitivamente estoy abierto a sugerencias.

Esa pieza clave no está en la hoja de ruta y no tenemos previsto añadirla.

Hubo muchos temas sobre esto a lo largo de los años:

Los he visto. Una diferencia aquí es que estoy dispuesto a desarrollar una aplicación completamente independiente que interactúe con la API de Discourse para ofrecer al usuario la experiencia de crear un subgrupo. Así, puedo crear el subgrupo yo mismo en la aplicación independiente, asociar miembros a él, etc.

Sin embargo, me gustaría seguir pudiendo utilizar la funcionalidad de publicación del frontend de Discourse (crear temas, responder, enlazar a categorías y añadir etiquetas principalmente) en esa página de subforo que ha creado mi aplicación.

Me dijeron que existe una forma de vincular los campos personalizados de los usuarios con etiquetas, o algo similar, para limitar las etiquetas a las que un usuario puede publicar.

Pero la esperanza subyacente es lo que he mencionado: puedo encargarme de gran parte de la configuración del subforo desde mi aplicación, pero me ahorraría mucho tiempo poder seguir utilizando la funcionalidad de publicación de Discourse.

Agradezco todas las respuestas. ¿Podría alguien proporcionar algunos ejemplos de cómo se utilizan normalmente los campos personalizados de usuario?

Parece que podría simplemente agregar un campo personalizado relacionado con el subforo dado (por ejemplo, ‘subforo123’) a cada usuario permitido y, luego, cuando un usuario vaya a la página de un subforo, consultar la API para ver si el usuario tiene el campo personalizado requerido. Si es así, entonces podrá publicar allí. Si no, no podrá, y quizás simplemente oculte los botones “nuevo tema” y “responder”.

Generalmente se utilizan para recopilar información (ubicación, cargo, etc.) al registrarse, la cual se muestra en la tarjeta de perfil.

Quizás lo que quieres hacer es permitir que las personas creen su propio Discourse (por ejemplo, usuario.tusitio.com) que funcione en una instalación multisitio donde tu Discourse “principal” actúe como servidor SSO para el sub-sitio del usuario. Podrías concebir un plugin que cree un nuevo sitio de Discourse en usuario.tusitio.com cada vez que se cree un nuevo usuario. Pero quizás no todos los usuarios deseen su propio subforo y, en su lugar, tendrías . . . algo . . . que les permita crear su sub-sitio.

Creo que eso se acerca bastante a lo que estás intentando hacer.

Eso se acerca realmente a lo que tengo en mente (los “subforos” han sido el objetivo). Gracias. Investigaré más sobre multisitio.

Pensé que permitir a los usuarios crear su propio sub-sitio en una estructura multisitio sería bastante más intensivo en recursos que, por ejemplo, permitirles crear sus propias categorías. ¿Podría funcionar un multisitio con cientos o más sub-sitios? Me pregunto cuánto impacto tendría eso en el servidor, o quizás no sea mucho más que un sitio único muy activo.

Así es, pero tiene la ventaja de ser posible.

Sí, conozco al menos una empresa que tiene cientos o más sub-sitios con al menos dos conjuntos diferentes de plugins, a un costo de 100-300 dólares al mes. Otros cobran 20 dólares al mes por sitio.

Por si no está claro, básicamente estás construyendo una empresa de alojamiento de Discourse.

Para empezar, necesitarás entre 4 y 16 GB de RAM, por ejemplo, para unas pocas docenas de sitios.

Para confirmar, ¿quieres decir que esa empresa paga $100-$300/mes para mantener cientos de sub-sitios? (parece que eso es lo que estás diciendo, es una cantidad bastante baja para cientos de sub-sitios)

Quiero decir que una empresa (la que desarrolla Discourse) cobra entre 100 y 300 dólares por sitio que quieras crear. Otras cobran del orden de 20 dólares al mes; supongo que están ganando dinero sin problemas.

Probablemente se necesiten al menos cien horas para resolver el problema que he propuesto, pero probablemente sean más.

EDITO: Pero quizás, si solo quieres un único sitio multisitio, podrías ponerlo en marcha en menos tiempo que eso.

Vale. Entendido. Gracias por la información.