Bug API: punto finale "." nel nome utente causa errore

Stiamo utilizzando l’API per integrare Discourse nel nostro sito (tramite pydiscourse).

Quando è il momento di aggiungere un utente a un gruppo Discourse tramite l’API, pydiscourse utilizza il metodo PUT all’URL dell’API di Discourse:

/admin/groups/{group_id}/members.json

…e passa il nome utente tramite la variabile ‘usernames’.

Se il nome utente contiene un “.” al suo interno, non c’è problema, a meno che quel “.” non appaia come ultimo carattere, nel qual caso l’API restituirà un errore con il messaggio:

Hai fornito parametri non validi alla richiesta: usernames
1 Mi Piace

Un nome utente non può terminare con un punto, quindi questa è la risposta prevista. Stavo per controllare la fonte, ma puoi provare a creare un account qui con un punto finale ed è illegale.

4 Mi Piace

Grazie per la rapida risposta, Jay. Sai per caso se l’email dell’utente può essere inviata per ‘username’ in quell’endpoint API, in modo che Discourse sappia come cercare l’utente tramite email? (Utilizziamo l’SSO per collegare la nostra app Django a Discourse, quindi Discourse dovrebbe avere entrambi gli identificatori per ciascun utente)

1 Mi Piace

Oh! Sì, lo so. L’altro giorno ho notato che puoi usare l’indirizzo email per l’endpoint che aggiunge un utente a un gruppo. Potrebbe essere stato il percorso non amministratore, però. Includi semplicemente l’email come nome del campo con l’indirizzo.

Se stai usando Discourse connect, allora puoi avere i gruppi gestiti al login, che è probabilmente quello che vuoi fare piuttosto che preoccuparti dell’API.

1 Mi Piace

Grazie per il follow-up.

Utilizziamo Discourse Connect, ma anche l’API.

A proposito, hai menzionato Potrebbe essere stato il percorso non amministratore, però

Quindi quella richiesta PUT sarebbe:

/groups/{group_id}/members.json

…con 'email': (email dell'utente) come payload… e Discourse sa semplicemente che il mio utente ha i diritti di amministratore per poter aggiungere quell’utente a quel gruppo?

(…scusa, non mi è chiaro perché ci siano due percorsi per la stessa operazione…)

Penso di sì. Ho usato How to reverse engineer the Discourse API per capire il percorso. E poi, immagino, ho guardato il codice sorgente per vedere che funzionano anche l’ID utente e l’indirizzo email.

Sì, l’SSO aggiorna i gruppi solo al momento del login, quindi l’API è la tua soluzione.