Convidar usuário deletado novamente

Provavelmente um caso de borda aqui, mas ao testar um endpoint de API (/invites.json), tudo funciona bem. Em seguida, excluí o usuário convidado e agora recebo uma resposta 422 desse endpoint. Usando o explorador de dados, consigo ver que o usuário não existe mais, mas o convite ainda aparece listado na tabela de convites.

É possível convidar um usuário com um endereço de e-mail que foi previamente excluído?

4 curtidas

Olá, bem-vindo! Para esclarecer: o usuário convidado já havia aceito o convite ou criado sua conta antes de você excluí-lo?

1 curtida

Obrigado! Sim, aceitei o convite e depois excluí a conta.

1 curtida

Ok, não consegui reproduzir o que você descreveu, a menos que eu tenha entendido algo errado sobre o que você espera fazer (o que é totalmente possível). Seria útil se você explicasse o que você esperava ver versus o que você está realmente vendo.

Mas estou usando:

Versão: 2.7.0beta7
Sistema operacional: Ubuntu 20.04.1 LTS

E fiz o seguinte:

  • convidei um usuário com um endereço de e-mail específico pela interface, Admin > Usuários > Enviar convites
    • Convidei e selecionei a opção de restringir o convite a um endereço de e-mail específico
  • aceitei o convite do e-mail especificado em uma janela anônima separada
  • como usuário administrador na minha janela original, excluí o usuário recém-inscrito
  • usei o Postman para enviar uma requisição GET para https://example.dev/u/my-dev-user/invited.json
    • é esse o endpoint que você estava usando? você mencionou /invites.json, mas eu recebo um erro 404 ao usar esse caminho, não tenho certeza se ele existe.
  • Recebi a seguinte resposta após excluir o usuário, que é o que eu esperava, já que excluí o usuário: nenhum pendente, nenhum resgatado e nenhum expirado:
{
    "invites": [],
    "can_see_invite_details": true,
    "counts": {
        "pending": 0,
        "expired": 0,
        "redeemed": 0,
        "total": 0
    }
}

Deveria ser possível — acabei de reenviar o convite para o mesmo e-mail que excluí acima, sem nenhum problema.

2 curtidas

Ah, desculpe, deveria ter especificado o endpoint. Discourse API Docs

Os passos que segui foram:

  • Convidar o usuário usando o endpoint POST Discourse API Docs
  • Aceitar o convite por e-mail
  • Fazer login como administrador e excluir o usuário
  • Tentar convidar o usuário novamente pelo passo 1. Desta vez, recebo uma resposta 422 com o erro: ```
    {
    “failed”: “FAILED”
    }
2 curtidas

Ah, e só para dar um retorno: o convite funciona pela interface de administração, como você descreveu, mas não pelo endpoint POST que estou usando.

1 curtida

Oooh, entendi, agora está claro – sim, consigo reproduzir isso agora.

Consegui enviar convites normais para e-mails totalmente novos via API com uma requisição POST:
Obtive a seguinte resposta como esperado:

REQUISIÇÃO: https://example.dev/invites.json?email=example%2Bsomething@hey.com
RESPOSTA REAL

{
    "id": 7,
    "invite_key": "inviteKEY",
    "link": "https://example.dev/invites/inviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:57:08.602Z",
    "updated_at": "2021-04-26T23:57:08.602Z",
    "expires_at": "2021-05-26T23:57:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}
  • então faço login em outro lugar e aceito o convite para aquele usuário.
  • em seguida, faço login novamente como administrador e excluo o usuário com e-mail: example+something@hey.com
  • depois, reenvio a mesma requisição POST para a API para convidar aquele usuário novamente

REQUISIÇÃO: https://example.dev/invites.json?email=example%2Bsomething@hey.com
RESPOSTA ESPERADA

{
    "id": 8,
    "invite_key": "newinviteKEY",
    "link": "https://example.dev/invites/newinviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:59:08.602Z",
    "updated_at": "2021-04-26T23:59:08.602Z",
    "expires_at": "2021-05-26T23:59:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}

RESPOSTA REAL

{
    "failed": "FAILED"
}
3 curtidas

Ah, bom, não fui só eu :slight_smile: Então, sou novo nisso. Isso é relatado como um bug agora ou há outro lugar para postar, como o GitHub?

1 curtida

Isso deve servir como o relatório, se eu entender corretamente! Entre nós dois, acho que já atendemos principalmente ao padrão para um relatório de bug

e, então, esperamos que alguém que possa fornecer uma explicação, uma solução alternativa e/ou uma correção nos informe o que fazer.

6 curtidas

@hcw-rohan @weallwegot Este bug foi corrigido na #12927.

Olá,

Acho que talvez a correção do bug tenha sido revertida ou não funcione mais, pois encontrei esse bug hoje. Segui os passos abaixo para identificar o problema.

  • Excluí um usuário no painel de administração
  • Convidei o usuário via API
  • Recebi a mensagem de falha

  • Excluí os convites pendentes para o usuário excluído

  • Convidei o usuário excluído via API

  • Recebi a mensagem de sucesso

  • Recebi o convite, mas ao clicar, apareceu o aviso: “Desculpe! Este convite é destinado a novos usuários que ainda não possuem uma conta existente.”

  • Nem a API nem o painel de administração conseguem encontrar o usuário excluído

  • Finalmente, tentei abrir o link do convite em uma janela anônima e consegui fazer login como um novo usuário. Talvez seja um problema com cookies?

  • Tentei adicionar um novo usuário via API

  • Recebi a mensagem de sucesso

Espero que isso ajude.

Olá Greg,

Tentei reproduzir o bug, mas para mim funcionou reconvitar um usuário que havia sido excluído. Testei usando tanto convites por e-mail quanto por link.

Tem certeza de que não estava logado ao acessar a página do convite? Existe apenas um caminho de código que exibe essa mensagem e não vejo problemas óbvios.