Links de convite gerados com e-mail não podem ser resgatados

Estou enviando uma requisição para o endpoint da API /invites.json com o seguinte JSON:

{
    "email": "new.member@example.com",
    "skip_email": true,
    "max_redemptions_allowed": 1,
    "expires_at": << data atual + 1 mês >>
    "group_names": "example_group"
}

Isso cria um convite válido, do qual eu extraio o link de convite e forneço ao usuário.

No entanto, quando o usuário tenta resgatar o convite, ocorre uma falha em discourse/app/controllers/invites_controller.rb at main · discourse/discourse · GitHub com o erro genérico invite.error_message, causado pela falha na atualização do banco de dados por algum motivo.

Tenho tentado rastrear o código, mas não vejo nada óbvio que se destaque.

Este é um exemplo de registro da tabela invites:

  id  |            invite_key            |            email             | invited_by_id | user_id | redeemed_at |         created_at         |         updated_at         | deleted_at | deleted_by_id |       invalidated_at       | moderator | custom_message | emailed_status | max_redemptions_allowed | redemption_count |       expires_at
 1587 | 4b4e........................2307 | example@gmail.com            |             1 |         |             | 2021-04-11 23:51:05.253528 | 2021-04-11 23:51:05.253528 |            |               |                            | f         |                |              0 |                       1 |                0 | 2021-05-11 11:51:05.193

Você já tentou fazer isso pela interface? Funciona? Se sim, qual é a diferença entre a requisição que a interface faz e a que você fez?

Há algo em /logs no site?

Infelizmente, não há nada nos logs. Ainda não tentei pela interface, vou verificar isso.

Aliás, há algum post que descreva como aplicar um patch ou executar um fork em produção? Veja meu comentário aqui: Install Discourse for development using Docker - #152 by jessicah.

@sam parece que isso afeta apenas alguns usuários e não outros, mas não consegui identificar o que é diferente :-/

Eu executaria um patch que adiciona logs adicionais, mas, conforme o link na mensagem anterior, embora eu possa rodar um ambiente de desenvolvimento, não consigo fazê-lo funcionar na minha instância de produção, então não sei muito bem como posso depurar :frowning:

Nem todos os usuários têm permissão para convidar. Tem certeza de que o usuário que está realizando os convites via API possui essa permissão?

invited_by_id é 1, ou seja, admin, usado para todos os convites.

1 curtida

Oi Jessica,

Nosso código de convite mudou muito desde abril. Você ainda está enfrentando algum problema?

cc @dan

2 curtidas