Permitir acceso solo cuando el usuario tenga un plan de suscripción en Memberpress

Mi cliente tiene una instalación de WordPress con Memberpress, que es el lugar donde un usuario inicia sesión para acceder a Discourse.

¿Existe alguna forma de permitir el acceso a Discourse solo a los usuarios que tengan un plan activo de Memberpress?

Gracias,
Per

Consulta mi primera respuesta en este tema para obtener detalles sobre cómo restringir los inicios de sesión en Discourse: How to prevent some WP users from being able to login to Discourse. Esto asume que el sitio de WordPress funciona como proveedor de SSO para Discourse y que estás utilizando el complemento WP Discourse.

1 me gusta

¡Gracias, Simon, eso es genial! :slight_smile:

Esto me permite verificar el acceso antes de redirigir al usuario a Discourse. ¿Sabes si hay una buena manera de comprobar si un usuario tiene una suscripción activa?
Esa sería la condición que usaría para decidir si los redirijo a Discourse o no.

¡Gracias!

Estoy seguro de que existe una forma de hacerlo, pero no estoy seguro de cómo acceder al nivel de suscripción de Memberpress de un usuario en WordPress. Sin embargo, es posible que haya ejemplos sobre cómo hacerlo en publicaciones de nuestra categoría Support > WordPress.

¡Ok, gracias :slight_smile:! ¡Que tengas un excelente fin de semana!

1 me gusta

Si alguien más está intentando lograr lo mismo, encontré la solución aquí:

Simon: una última pregunta: ¿cuánto tiempo permanece un usuario conectado en Discourse antes de ser desconectado? ¿O el usuario permanece conectado indefinidamente hasta que hace clic en el botón “Cerrar sesión”?

Esto está controlado por la configuración del sitio maximum session age de Discourse. Esa configuración tiene un valor predeterminado de 1440 horas. A menos que se establezca en un valor muy pequeño, no es una forma fiable de cerrar la sesión de los usuarios. Esto se debe a que establece la cantidad de tiempo que un usuario permanecerá conectado desde su última visita. Establecer maximum session age en un número muy pequeño de horas también podría causar molestias a los usuarios de tu sitio.

Creo que tu mejor opción sería cerrar la sesión de los usuarios en Discourse a través de la API cuando las membresías expiren. Hay un ejemplo de código sobre cómo hacerlo aquí: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. Es posible que necesites la ayuda de un desarrollador para realizar una llamada a la API y cerrar la sesión de los usuarios en Discourse cuando su membresía expire.

1 me gusta

¿Puedo simplemente llamar a la función logout_from_discourse() o tengo que copiar todo ese código?

No es tan sencillo como simplemente llamar a la función logout_from_discourse(), pero debería ser posible utilizar un hook de acción de WordPress para llamar a esa función cuando se ejecute una acción específica en tu sitio de WordPress. Por ejemplo, cuando se revoca el nivel de membresía de un usuario. Es posible que alguien en la comunidad de Discourse pueda ayudarte con la sintaxis necesaria para que esto funcione.

1 me gusta