Hola a todos, tengo un caso de uso que actualmente no está muy bien soportado: necesito desactivar el correo de activación para los usuarios invitados, incluidos los usuarios invitados mediante un enlace.
Después de crear el tema mencionado anteriormente, esto fue implementado, pero solo para usuarios invitados por correo electrónico.
Mi instancia de Discourse es solo por invitación y, de hecho, estoy enviando enlaces de invitación por correo electrónico, pero no los correos electrónicos integrados de Discourse. Genero los enlaces de invitación con una solicitud POST a /invites/link y los almaceno en una base de datos externa; desde allí, envío los enlaces al usuario. Así que cuando los usuarios hacen clic en el enlace, ya han verificado su correo electrónico, pero luego se les pide que lo hagan una vez más.
Sé que mi caso de uso no es particularmente común, así que pensé que probaría crear un plugin sencillo para modificar las partes necesarias de Discourse y hacer que funcione como lo necesito.
Ya tengo un esqueleto funcionando y he añadido una configuración del sitio (no_activation_enabled). Tras buscar en el repositorio principal, creo que este podría ser el archivo que necesita edición:
No estoy completamente seguro, pero creo que quizás cambiando condicionalmente (si SiteSetting.no_activation_enabled es verdadero y si el usuario fue invitado por un miembro del personal, tal vez invite.invited_by.staff?) el valor de active a true en user.attributes podría funcionar:
user.attributes = {
email: invite.email,
username: available_username,
name: name || available_username,
active: false,
trust_level: SiteSetting.default_invitee_trust_level,
ip_address: ip_address,
registration_ip_address: ip_address
}
Pero, ¿cómo puedo hacer este cambio desde un plugin? ¿Acaso eso está dentro del alcance de lo que pueden hacer los plugins? ¿O solo pueden añadir cosas, no modificarlas? ¿O necesito reemplazar todo el archivo invite_redeemer.rb?
He completado la introducción a la creación de plugins, así como esta guía, pero después de horas tratando de investigar el código, incluyendo otros plugins, siento que estoy dando cabezazos contra la pared… Así que, si alguien tiene algún consejo para mí, ¡estaría muy agradecido!