Estoy utilizando SSO de WordPress para autorizar a quienes han comprado una membresía (implementé lógica personalizada en WordPress para determinar si son miembros). Todo funciona bien, pero me pregunto cómo gestionar a los miembros que cancelan.
Obviamente, la cancelación de su membresía significa que no podrán iniciar sesión. Desafortunadamente, necesito cerrarles la sesión manualmente cuando cancelan, por si siguen accediendo al foro y manteniendo su sesión activa (hacer cosas manualmente era algo que pensé que había dejado atrás al cambiar de mi grupo de Facebook).
Pero tengo dos problemas adicionales en mente:
¿Qué pasa con los temas o publicaciones que hicieron en el foro? Quiero que permanezcan, así que presumiblemente eso significa que no puedo eliminar al usuario.
Sí quiero asegurarme de que no se envíen correos electrónicos de resumen a los miembros que cancelaron. Discourse ignora completamente que la cuenta ha sido cancelada hasta que hago “algo”. ¿Qué es eso, con la salvedad de que no quiero eliminar su contenido?
¿Todo esto se resuelve con la supresión de usuarios y cuáles son las mejores prácticas para automatizar esto? Asumo que se requiere algún tipo de código personalizado, pero lo consulto por si puedo evitarlo.
Puedes anonimizarlos. De esta manera, la información se mantiene, pero no el usuario.
Otra opción que podrías usar es implementar lógica personalizada para, en lugar de crear el usuario, agregarlo a un nuevo grupo. De esta forma, el resumen solo debería ser accesible para quienes puedan acceder a la categoría.
Otra cosa que podrías hacer es ejecutar algún tipo de trabajo programado (cronjob) que fuerce el cierre de sesión (o la eliminación de la cuenta) en todos los usuarios que hayan sido cancelados.
Gracias, @marianord. Me temo que no termino de entender el segundo párrafo. Cuando dices “en lugar de crear el usuario”, ¿a qué etapa del ciclo de vida del usuario te refieres? Probablemente me esté perdiendo un punto sencillo, pero no tengo claro el consejo. ¿Podrías aclararlo?
También revisaré la función de anonimización, pero tengo algunas preguntas al respecto:
¿Cómo se mostrará su contenido en cuanto al nombre de usuario que aparece junto a sus publicaciones?
Si logro que se vuelvan a suscribir a mi membresía (mismo correo electrónico, etc.), ¿eso “anonimizará” algo, es decir, ¿sus publicaciones antiguas volverán a aparecer con su nombre de usuario?
Por cierto, mi mayor preocupación en todo esto es el correo electrónico de resumen, ya que es algo orientado al cliente (se envían correos). Supongo que otra opción sería cambiar manualmente su configuración de resumen para que nunca se les envíe, ¿verdad? (aunque eso sería nuevamente un paso manual y, con suerte, en algún momento se podrá hacer a través de una API).
Si eso es factible, entonces técnicamente no necesito hacer nada con el usuario. Pueden seguir siendo usuarios válidos en Discourse, los correos dejarán de enviarse (ver arriba), pero ya no podrán iniciar sesión.
Suspender al usuario a través de la API de Discourse podría ser una buena forma de automatizar esto. Cuando un usuario es suspendido, se cierra su sesión en Discourse y ya no recibirá correos de resumen. Si se proporciona un message al suspender al usuario, ese mensaje se enviará por correo electrónico al usuario. Esto podría usarse para animarlos a renovar su membresía.
Hay algo a tener en cuenta: la suspensión fue diseñada para manejar usuarios problemáticos, no para el caso de una membresía vencida que podría renovarse en el futuro. Es posible que necesites personalizar el texto user_notifications.account_suspended.text_body_template de tu sitio para adaptar la plantilla del correo enviado a los usuarios suspendidos.
Las publicaciones creadas por un usuario anonimizado se ven así:
No hay una forma sencilla de desanonimizar a un usuario. El único enfoque que conozco es fusionar el usuario anónimo con un nuevo usuario desde la consola de Rails. Dado que anonimizar a un usuario elimina todos los datos identificativos, podría ser difícil saber qué cuentas fusionar. Si existe la posibilidad de que los usuarios renueven sus membresías, suspender al usuario es probablemente un enfoque mejor.
Sí, por lo que dices, la suspensión parece ser el enfoque correcto aquí. Pero tengo una pregunta sobre los correos electrónicos enviados. Tengo correos electrónicos basados en CRM que se envían cuando la gente cancela, así que no quiero que Discourse envíe nada en absoluto.
Mencionas: “Si se proporciona un mensaje cuando el usuario es suspendido, ese mensaje se enviará como correo electrónico al usuario”.
Si NO proporciono un mensaje, ¿significa eso que no se envía nada y no necesito preocuparme por actualizar la plantilla en absoluto (ya que nunca se enviará)?
Solo mirando la suspensión, quizás no estoy muy claro sobre cómo se utilizan los campos “Motivo de la suspensión” y correo electrónico.
Básicamente, mi objetivo es suspender al usuario y no hacer absolutamente nada más
Esto es correcto. La forma más sencilla de probarlo es crear un usuario con una dirección de correo electrónico temporal e intentar suspenderlo y reactivarlo a través de la interfaz de usuario.
Cuando se suspende un usuario, deben establecerse suspended_until y reason. Estos campos se muestran al usuario suspendido cuando intenta iniciar sesión en el sitio. Puedes personalizar este texto buscando login.suspended_with_reason en tu página de Administración / Personalizar / Texto.
A menos que actives la configuración del sitio hide suspension reasons, habrá un aviso indicando que el usuario ha sido suspendido, visible en la tarjeta de usuario y en la página de perfil del usuario suspendido. Si activas la configuración del sitio hide suspension reasons, el aviso solo será visible para el personal.