I collegamenti di invito generati con email non possono essere riscattati

Sto inviando una richiesta all’endpoint API /invites.json con il seguente JSON:

{
    "email": "new.member@example.com",
    "skip_email": true,
    "max_redemptions_allowed": 1,
    "expires_at": << data corrente + 1 mese >>,
    "group_names": "example_group"
}

Questo crea un invito valido, di cui recupero il link e lo fornisco all’utente.

Tuttavia, quando l’utente tenta di riscattare l’invito, l’operazione fallisce su discourse/app/controllers/invites_controller.rb at main · discourse/discourse · GitHub con il generico errore invite.error_message dovuto a un fallimento nell’aggiornamento del database per qualsiasi motivo.

Ho provato a tracciare il codice, ma non vedo nulla di evidente che spicchi.

Questo è un esempio di record dalla tabella 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

Hai provato a farlo dall’interfaccia utente? Funziona? In tal caso, qual è la differenza tra la richiesta effettuata dall’interfaccia e quella che hai inviato tu?

Ci sono eventuali informazioni in /logs sul sito?

Purtroppo non c’è nulla nei log. Non ho ancora provato dall’interfaccia utente, ma ci darò un’occhiata.

A proposito, esiste un post che descrive come applicare una patch o eseguire un fork in produzione? Vedi il mio commento qui: Install Discourse for development using Docker - #152 by jessicah.

@sam sembra che riguardi solo alcuni utenti e non altri, ma non sono riuscito a identificare cosa sia diverso :-/

Potrei applicare una patch che aggiunga una registrazione più dettagliata, ma, come indicato nel link del messaggio precedente, sebbene possa eseguire un ambiente di sviluppo, non riesco a farlo funzionare nella mia istanza di produzione, quindi non so davvero come poter effettuare il debug :frowning:

Non tutti gli utenti possono inviare inviti. Sei sicuro che l’utente che esegue gli inviti tramite l’API abbia il permesso di invio?

invited_by_id è 1, ovvero admin, utilizzato per tutti gli inviti.

1 Mi Piace

Ciao Jessica,

Il nostro codice di invito è cambiato notevolmente da aprile; è curioso sapere se stai ancora riscontrando problemi in questo senso?

cc @dan

2 Mi Piace