Impossibile eliminare utente con PM, messaggio di errore fuorviante

Stiamo utilizzando l’SSO e quando qualcuno chiude il proprio account, eliminiamo anche il suo account Discourse tramite API (o lo anonimizziamo, se ha dei post).

Tuttavia, sembra esserci qualcosa che non va, dato che stiamo riscontrando alcuni errori 403 durante questa operazione. Indagando un po’, ho scoperto che questo è il messaggio di errore restituito dalla chiamata API:

{
    "http_code": 403,
    "body": "{\"deleted\":false,\"message\":\"User XXX has 0 posts, so they can't be deleted.\"}"
}

Ma se ci sono 0 post, dovrebbe essere possibile eliminarlo? Guardando le informazioni di questo specifico account, effettivamente non ci sono post:

Tuttavia, c’è un messaggio privato inviato a Discobot (tutorial).

Quindi, penso che ci siano diversi aspetti da considerare:

  1. Il messaggio di errore che ha rifiutato l’eliminazione dell’utente conta solo i post pubblici, ma forse dovrebbe contare anche quelli privati?
  2. In realtà, i messaggi privati dovrebbero impedire l’eliminazione di un account? Comprendo il ragionamento secondo cui la rimozione di un account complica la narrazione in un argomento pubblico, ma in un messaggio privato forse l’argomento non è altrettanto solido?
  3. Se la risposta alla domanda precedente è ancora sì (cioè, i messaggi privati dovrebbero comunque impedire l’eliminazione di un account), anche i messaggi inviati a Discobot dovrebbero essere presi in considerazione per impedire la rimozione di un account? Voglio dire, la maggior parte delle persone segue il tutorial e invia messaggi privati a Discobot… il che rende praticamente impossibile eliminare molti account che non hanno mai partecipato, solo perché hanno completato il tutorial (forse questo vale solo dopo delete_user_max_post_age giorni, ma comunque).

Infine, e non sono sicuro se sia correlato al punto 1, ma quando controllo le informazioni API di questo utente, vengono restituiti:
post_count: 0
can_be_deleted: 1
can_delete_all_posts: 0

Tuttavia, in pratica, questo utente non può essere eliminato. Quindi forse la logica di can_be_deleted conta solo i post pubblici?

4 Mi Piace

Ottimo lavoro di investigazione! Dovremmo correggere almeno il messaggio di errore.

"body": "{\"deleted\":false,\"message\":\"L'utente XXX ha 0 post, quindi non può essere eliminato.\"}"

Dovrebbe dire

L'utente ha x post, quindi non può essere eliminato.

Dovremmo anche probabilmente dare un indizio sulla situazione, dato che questo è capitato abbastanza spesso

L'utente ha x post (pubblici o messaggi privati), quindi non può essere eliminato

3 Mi Piace

È fatto. Ho anche corretto il conteggio dei post errato nel messaggio.

4 Mi Piace

Grazie @vinothkannans! :+1:

C’è la possibilità di verificare anche il fatto che can_be_deleted sembri indicare che un account può essere eliminato quando in realtà non può (a causa dei messaggi privati)? Al momento siamo costretti a tentare prima l’eliminazione dell’utente e poi ricorrere all’anonimizzazione in caso di fallimento (poiché can_be_deleted non è affidabile).

2 Mi Piace

Il problema discusso nel seguente argomento potrebbe essere correlato in qualche modo ai problemi trattati in questo argomento?

2 Mi Piace

Questo argomento è stato automaticamente chiuso dopo 3 giorni. Non sono più consentite nuove risposte.