Invita di nuovo l'utente eliminato

Probabilmente si tratta di un caso limite: mentre testavo un endpoint API (/invites.json), tutto funzionava correttamente. Ho poi eliminato l’utente invitato e ora ricevo una risposta 422 da quell’endpoint. Usando l’esploratore dei dati, posso vedere che l’utente non esiste più, ma l’invito è ancora elencato nella tabella degli inviti.

È possibile invitare un utente con un indirizzo email che è stato precedentemente eliminato?

4 Mi Piace

Ciao, benvenuto! Per chiarire: l’utente invitato aveva accettato l’invito o creato il proprio account prima che tu lo eliminassi?

1 Mi Piace

Grazie! Sì, ho accettato l’invito, poi ho eliminato l’account.

1 Mi Piace

Ok, non sono riuscito a riprodurre il comportamento che hai descritto, a meno che non abbia frainteso qualcosa riguardo a ciò che speri di ottenere (è assolutamente possibile). Potrebbe essere utile se spiegassi cosa ti aspettavi di vedere rispetto a ciò che stai effettivamente vedendo.

Sto utilizzando:

Versione: 2.7.0beta7
Sistema operativo: Ubuntu 20.04.1 LTS

& ho eseguito le seguenti operazioni:

  • Invito di un utente con un indirizzo email specifico dall’interfaccia utente, Amministratore > Utenti > Invia Inviti
    • Ho inviato l’invito e selezionato l’opzione per limitare l’invito a un indirizzo email specifico
  • Ho accettato l’invito dall’indirizzo email specificato in una finestra di navigazione in incognito separata
  • Come utente amministratore nella mia finestra originale, ho eliminato l’utente appena registrato
  • Ho utilizzato Postman per inviare una richiesta GET a https://example.dev/u/my-dev-user/invited.json
    • è questo l’endpoint che stavi utilizzando? hai menzionato /invites.json, ma ottengo un errore 404 con quello in ogni caso; non sono completamente sicuro che esista.
  • Ho ricevuto la seguente risposta dopo aver eliminato l’utente, che è ciò che mi aspettavo dato che ho eliminato l’utente: nessuno in sospeso, nessuno riscattato e nessuno scaduto:
{
    "invites": [],
    "can_see_invite_details": true,
    "counts": {
        "pending": 0,
        "expired": 0,
        "redeemed": 0,
        "total": 0
    }
}

Dovrebbe essere possibile: ho appena reinviato lo stesso indirizzo email che ho eliminato sopra senza alcun problema.

2 Mi Piace

Ah, scusa, avrei dovuto specificare l’endpoint. Discourse API Docs

Ecco i passaggi che ho seguito:

  • Invito dell’utente utilizzando l’endpoint POST Discourse API Docs
  • Accettazione dell’invito tramite email
  • Accesso come amministratore ed eliminazione dell’utente
  • Tentativo di inviare di nuovo l’invito all’utente come nel passaggio 1. Questa volta ricevo una risposta 422 con l’errore: ```
    {
    “failed”: “FAILED”
    }
2 Mi Piace

Ah, e solo per fare un follow-up: l’invito funziona tramite l’interfaccia di amministrazione come hai descritto, ma non tramite l’endpoint POST che sto utilizzando.

1 Mi Piace

Oooh, capito, ora è chiaro – sì, riesco a riprodurlo ora.

Riesco a inviare inviti regolari a indirizzi email completamente nuovi tramite l’API con una richiesta POST:
Ottengo la seguente risposta come previsto:

RICHIESTA: https://example.dev/invites.json?email=example%2Bsomething@hey.com
RESPONSE REALE

{
    "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": []
}
  • poi accedo da un’altra posizione e accetto l’invito per quell’utente.
  • poi torno ad accedere come admin e elimino l’utente con email: example+something@hey.com
  • successivamente rieseguo la stessa richiesta POST all’API per invitare di nuovo quell’utente

RICHIESTA: https://example.dev/invites.json?email=example%2Bsomething@hey.com
RESPONSE PREVISTA

{
    "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": []
}

RESPONSE REALE

{
    "failed": "FAILED"
}
3 Mi Piace

Ah, bene, non ero solo io :slight_smile: Quindi sono nuovo in questa faccenda: questo viene segnalato come un bug ora o c’è un altro posto dove pubblicarlo, ad esempio GitHub?

1 Mi Piace

Se ho capito bene, questo dovrebbe servire come rapporto! Tra noi due, penso che abbiamo per lo più rispettato lo standard per un rapporto di bug

E poi, speriamo, qualcuno in grado di fornire una spiegazione, una soluzione alternativa e/o una correzione ci farà sapere cosa fare.

6 Mi Piace

@hcw-rohan @weallwegot Questo bug è stato corretto in #12927.

Ciao,

Penso che forse la correzione del bug sia stata annullata o non funzioni più, poiché ho riscontrato questo problema oggi. Ho seguito i passaggi riportati di seguito per identificare il problema.

  • Ho eliminato un utente dal pannello di amministrazione
  • Ho invitato l’utente tramite l’API
  • Ho ricevuto un messaggio di errore

  • Ho eliminato gli inviti in sospeso per l’utente eliminato

  • Ho invitato di nuovo l’utente eliminato tramite l’API

  • Ho ricevuto un messaggio di successo

  • Ho ricevuto l’invito, ma quando ho cliccato ho ottenuto l’avviso: “Spiacenti! Questo invito è destinato a nuovi utenti che non hanno già un account esistente.”

  • Né l’API né il pannello di amministrazione riescono a trovare l’utente eliminato

  • Infine, ho provato ad aprire il link dell’invito in una finestra di navigazione in incognito e sono riuscito ad accedere come nuovo utente: potrebbe essere un problema con i cookie?

  • Ho provato ad aggiungere un nuovo utente tramite l’API

  • Ho ricevuto un messaggio di successo

Spero che questo possa essere d’aiuto.

Ciao Greg,

Ho provato a riprodurre il bug, ma per me è riuscito a reinvitare un utente che era stato eliminato. Ho provato sia con gli inviti via email che con quelli tramite link.

Sei sicuro di non essere loggato quando hai accesso alla pagina dell’invito? C’è un unico percorso di codice che visualizza questo messaggio e non vedo problemi evidenti.