Hola. Soy nuevo en Discourse. Tengo una aplicación ejecutándose en AWS que utiliza Cognito para la autenticación. Quiero vincular esta aplicación a mi nuevo foro alojado en Discourse. He dado un buen comienzo, pero espero que alguien pueda brindarme orientación sobre los pasos finales para lograrlo.
El objetivo es que la experiencia de inicio de sesión sea fluida entre mi aplicación y el foro de Discourse. Por lo tanto:
-
Si un usuario ha iniciado sesión en mi aplicación, cuando vaya al foro de Discourse, este lo reconocerá y no requerirá un nuevo inicio de sesión.
-
De manera similar, si un usuario va primero al foro de Discourse y no ha iniciado sesión, Discourse lo redirigirá a la página de inicio de sesión de mi aplicación (o a una interfaz de usuario de inicio de sesión alojada si es necesario).
El Plugin de autenticación OpenId Connect parece estar bien diseñado para esto. Me he registrado en un Plan Empresarial con Discourse para asegurarme de poder usar este plugin.
He seguido las instrucciones proporcionadas por @david y he realizado lo que creo que es la configuración en el lado de Cognito:
-
Desde Cognito, he obtenido el “documento de descubrimiento de OpenID Connect” y el “client id de OpenID Connect”.
-
En la configuración de mi Discourse, bajo openId_Connect, los he agregado y guardado.
-
He marcado “habilitar autenticación OpenID Connect” y, bajo el ámbito de autorización de OpenID Connect, he ingresado “openid email”. He guardado esta configuración.
Según la descripción del plugin, ¿esto debería ser suficiente, correcto?
Bueno, cuando inicio sesión en mi aplicación y luego voy a mi foro, no sucede nada. Solo muestra la página de inicio normal con los botones “registrarse” e “iniciar sesión”. Espero que me inicie sesión automáticamente después de verificar con Cognito, pero no lo hace. ¿Qué más necesito hacer?
Además, si un usuario llega al sitio del foro por primera vez (sin haber iniciado sesión nunca en mi aplicación), no debería ver los botones de registro e inicio de sesión de Discourse; en su lugar, debería ver un botón que, al hacer clic, lo redirija a la página de inicio de sesión de mi aplicación. ¿Cómo agrego esto?
Y finalmente, los usuarios se suscriben a mi aplicación y pagan para usar funciones premium. Esto se guarda como atributos personalizados para el usuario en Cognito (hay un atributo personalizado que indica si está suscrito o no). Solo los usuarios suscritos deberían poder publicar en el foro. Por lo tanto, cuando Discourse verifica con Cognito para obtener la información del usuario, debe verificar el atributo personalizado del usuario y, solo si el usuario está suscrito, otorgarle la capacidad de publicar. ¿Cómo lo hago?
Al ser tan nuevo en Discourse, agradecería mucho cualquier información que alguien tenga sobre cualquiera de estas preguntas. ¡Gracias!