Olá pessoal, tenho um caso de uso que atualmente não é muito bem suportado: preciso desativar o e-mail de ativação para usuários convidados — incluindo usuários convidados por meio de um link.
Depois que criei o tópico acima, isso foi implementado, mas apenas para usuários convidados por e-mail.
Minha instância do Discourse é apenas por convite e, na verdade, estou enviando links de convite por e-mail, mas não os e-mails nativos do Discourse. Gero os links de convite com uma requisição POST para /invites/link e os armazeno em um banco de dados externo; a partir daí, envio os links ao usuário. Assim, quando os usuários clicam no link, eles já verificaram seu e-mail, mas são solicitados a fazer isso novamente.
Percebo que meu caso de uso não é muito comum, então pensei em tentar criar um plugin simples para modificar as partes necessárias do Discourse e fazer isso funcionar como preciso.
Já tenho um esqueleto funcionando e adicionei uma configuração do site (no_activation_enabled). Depois de pesquisar no repositório principal, acho que este pode ser o arquivo que precisa ser editado:
Não tenho certeza total, mas acho que talvez alterando condicionalmente (se SiteSetting.no_activation_enabled for verdadeiro e se o usuário foi convidado por um membro da equipe, talvez invite.invited_by.staff?) o valor de active para true em user.attributes possa 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
}
Mas como faço para alterar isso a partir de um plugin? Isso está mesmo no escopo do que os plugins podem fazer? Ou eles só podem adicionar coisas, não modificar? Ou preciso substituir todo o arquivo invite_redeemer.rb?
Concluí a introdução à criação de plugins, além deste guia, mas depois de horas tentando explorar a base de código, incluindo outros plugins, sinto que estou batendo a cabeça na parede… Então, se alguém tiver alguma orientação para mim, ficaria super grato!