No hay botón de aprobar para nuevos usuarios

¿Qué estoy pasando por alto aquí? Acabo de tener un usuario que se registró por primera vez a través de WordPress SSO. He configurado el sistema para que se requieran aprobaciones. ¿No debería aparecer esa opción aquí? No tengo idea de cómo aprobar a este usuario :frowning:

Sí tengo la notificación en el menú de administrador de que hay un usuario pendiente de aprobación.

Puedo reproducir este problema si habilito tanto SSO como la configuración del sitio debe aprobar usuarios. Para aprobar al usuario, haz clic en su nombre de usuario en el elemento de revisión:

Esto te llevará a la página de administración del usuario:

En la sección Permisos de la página de administración del usuario, haz clic en el botón Activar cuenta si el usuario aún no ha sido activado:

Luego haz clic en el botón Aprobar:

Esto debería aprobar al usuario y eliminar la notificación de tu Cola de revisión.

Genial. Eso está solucionado, muchas gracias. ¿Es esto así por diseño? No estoy seguro de entender cómo encaja aquí el concepto de activación. ¿Necesito tanto activar como aprobar cada vez?

Creo que tener tanto SSO como aprobar usuarios manualmente habilitados es un caso un poco excepcional. No estoy seguro de cómo se espera que funcione. Idealmente, cuando SSO está habilitado, deberías gestionar la aprobación de usuarios en el sitio del proveedor de SSO (WordPress). Desafortunadamente, esto requiere algo de código personalizado. Consulta How to prevent some WP users from being able to login to Discourse para obtener detalles sobre cómo configurarlo.

Voy a investigar cómo se espera que funcione la aprobación de usuarios cuando tanto aprobar usuarios manualmente como SSO están habilitados. Si encuentro algo relevante, lo informaré aquí.

Gracias por la excelente respuesta, @simon. No lo mencioné antes porque se basaba simplemente en un recuerdo (que, en mi caso, siempre es sospechoso). Pero…

Acabo de tener otro usuario que inició sesión y de inmediato tuve disponible la opción de aprobación, es decir, no fue necesario pasar primero por la etapa de activación.

Así que esto sigue siendo bastante confuso para mí. No he realizado ningún cambio de configuración que explique por qué el proceso fue diferente entre las dos personas nuevas más recientes. La confusión reina…

Te avisaré si descubro algo más.

Gracias de nuevo.

Pensaba que no estaba permitido. El host de SSO es responsable de gestionar los usuarios. Mi entendimiento es que si necesitas que algunos usuarios con cuentas en SSO no tengan acceso a Discourse, debes gestionarlo mediante grupos o de alguna manera denegar el inicio de sesión en Discourse.

Aunque tenemos la extraña situación de tener que activar Y aprobar algunos usuarios después de que intenten iniciar sesión, parece que está funcionando. Con la configuración que tenemos, el administrador debe aprobar las solicitudes después de que cada usuario intente iniciar sesión por primera vez. Eso está bien (más o menos, véase más abajo), por lo que las dos opciones (usar SSO y aprobar usuarios) parecen estar bien.

Dicho esto, la imposibilidad de aprobar previamente un conjunto de usuarios, antes de que el usuario realice ese primer intento de inicio de sesión, es lamentable y representa un problema considerable. Esto significa que el usuario debe esperar antes de poder iniciar sesión, incluso aunque nosotros (los administradores) sabemos perfectamente quiénes son con antelación.

Sospecho que @simon tiene razón al afirmar que esto es un caso muy específico desde la perspectiva de Discourse. Sin embargo, es bastante común que los sitios de WooCommerce vendan tanto productos regulares como membresías. Yo me encuentro en esa situación y es un escenario bastante habitual. Por lo tanto, mis usuarios se dividen en dos conjuntos lógicos (y superpuestos): clientes y miembros. Quiero poder aprobar previamente la lista de miembros para que no tengan que esperar la aprobación. Podría considerar automatizar esto más adelante, pero tendrá que ser después del lanzamiento de mi foro el 1 de septiembre, lo cual es una lástima.

¡Ajá! Quieres configurar WooCommerce para gestionar esos grupos en Discourse, en lugar de tener que hacer ajustes manuales con esos usuarios en Discourse. Hay varios temas sobre cómo hacerlo. Requiere un poco de código personalizado y hay ejemplos disponibles. Como referencia, por lo general cobro entre 1000 y 1500 dólares por ese trabajo.

Gracias @pfaffman. Probablemente pueda hacerlo yo mismo con el tiempo y he estado investigando. Para el lanzamiento, voy a establecer la expectativa de que se requerirá una aprobación y simplemente trataré de resolverlas rápidamente. Después del lanzamiento, veré si puedo automatizar esto de alguna manera.

Una aclaración sobre una de mis expectativas para la solución totalmente automatizada.

Quiero evitar una solución donde los no miembros puedan iniciar sesión pero luego sean bloqueados para hacer cualquier cosa (quizás porque no están en algún grupo relacionado con miembros). En cambio, si no son miembros, quiero que su inicio de sesión real falle, preferiblemente con la capacidad de redirigir a una página donde pueda explicar por qué.

Dicho de otra manera, bloquear el inicio de sesión si no son miembros es preferible a permitir el inicio de sesión y luego bloquear el acceso a los recursos.

Gracias de nuevo.

@simon Acabo de dedicar unos minutos a investigar posibles opciones para este desafío y me topé contigo en esta página :slight_smile: WP Discourse – WordPress plugin | WordPress.org. Así que tengo una pregunta más concreta para ti sobre el plugin.

Mi negocio gira en torno a WordPress y WooCommerce, y todas mis integraciones tienden a utilizar etiquetas, cuando es posible, para gestionar usuarios. WP Fusion es el elemento que une todo esto, pero la conclusión es que tengo etiquetas en todos los usuarios (ya sean clientes, miembros, etc.).

Con ese contexto, lo que me encantaría poder hacer es escribir mi propia función en el lado de WordPress que implemente cierta lógica (en mi caso, tan simple como verificar si el usuario tiene una etiqueta) y rechace el inicio de sesión si no se cumple ese criterio.

¿Sabes de algún hook que pueda usar para implementar esa lógica? Sería una solución genial y dejaría el inicio de sesión aún muy bajo el control de WordPress.

Gracias.

Sí, este tema describe cómo hacer lo que buscas: How to prevent some WP users from being able to login to Discourse. El segundo mensaje del tema contiene dos funciones de ejemplo que puedes utilizar. Necesitarás proporcionar el código para reemplazar el comentario /* Some condition that returns true if the user doesn't meet the membership requirement */ que aparece en el ejemplo de código.

¡Fantástico! Creo que malinterpreté ese tema cuando lo revisé antes, pero parece ser exactamente lo que necesito. Mientras se implementa y se prueba (¡palabras célebres!), ¡creo que estoy listo!

Gracias.

Lo imaginaba… y…

¡Te lo dije! :wink:

Me alegra que ya estés en camino de resolverlo.

Efectivamente. Disculpa por haber pasado eso por alto, @pfaffman, y gracias por tu ayuda. Voy a configurar un VPS de Discourse espejo para que se comunique con mi sitio web espejo y, si todo va bien, espero tenerlo funcionando pronto.