Fehler beim Erstellen eines API-Schlüssels auf „Single User"-Ebene: Wird standardmäßig auf „All Users" gesetzt

Reproduktionsschritte:

  1. Öffnen Sie https://yourdiscoursedomain.com/admin/api/keys
  2. Wählen Sie einen neuen Schlüssel aus
  3. Wählen Sie als Benutzerebene „Nur ein Benutzer“ aus
  4. Erstellen Sie den Schlüssel
  5. Öffnen Sie nach der Erstellung die Details des Schlüssels
  6. Die Benutzerebene wird als „Alle Benutzer“ angezeigt

Es ist für mich sehr unklar, was der Unterschied zwischen den beiden Optionen für die Benutzerebene ist, aber dies scheint eindeutig ein Fehler zu sein.

(Ich verwende den gehosteten Discourse-Dienst)

[quote=“joshfriend, Beitrag:1, Thema:141907”]
wähle „Einzelner Benutzer

1 „Gefällt mir“

Ich kann das Problem reproduzieren, wenn ich den von Ihnen aufgeführten Schritten folge. Beim Erstellen eines API-Schlüssels für einen einzelnen Benutzer erwartet Discourse, dass ein Benutzername in das Feld „Benutzer“ des Formulars eingegeben wird:

Wenn als Benutzerebene „Einzelner Benutzer“ ausgewählt ist, aber kein Benutzername im Feld „Benutzer“ angegeben wird, wird ein API-Schlüssel für alle Benutzer erstellt. Ich würde stattdessen eine Fehlermeldung erwarten. Ähnlich wie beim Absenden des Formulars ohne Beschreibung.

3 „Gefällt mir“

Ich wollte einen Art „Bot“-Benutzer erstellen, um Beiträge aus bestimmten Kategorien abzurufen. Diese Discourse-Instanz verwendet ausschließlich die Authentifizierung über GSuite, sodass es keine Möglichkeit mehr gibt, beliebige Benutzer zu erstellen. Ich hatte gehofft, dass ich bei einem „Single User“-Schlüssel den neuen Benutzernamen eingeben könnte, den ich dem Bot zuweisen wollte, aber nun sehe ich, dass der Benutzername ein bereits existierender Benutzer sein muss. Das Formularfeld für den Benutzernamen bietet keine Validierung, sodass nicht klar war, dass ich nicht einfach einen beliebigen Namen eingeben kann (wie ich es beispielsweise bei eingehenden Slack-Webhooks tun würde). Anschließend schlägt die Einreichung beim Nachschlagen des eingegebenen Benutzernamens stillschweigend fehl, und stattdessen wird ein „All Users“-Schlüssel erstellt.

Ich vermute, dies ist eher ein Usability-Fehler als ein funktionaler. Die Dokumentation hier fand ich verwirrend, da sie das Feld „Benutzerebene“ überhaupt nicht erklärt und außer einer Erwähnung in einem Kommentar weiter unten im Thread keine Rede von einem „All Users“-Typ war.

Ein API-Schlüssel für alle Benutzer würde funktionieren, es sei denn, Sie möchten, dass der „Bot“ nicht in der Lage ist, einige Kategorien zu lesen.

Ist das deine Username-Selector-Komponente @j.jaffeux?

Nein, dies ist keine select-kit-Komponente. Das Problem besteht darin, dass wir nur prüfen, ob eine Beschreibung vorhanden ist, nicht aber, ob ein Benutzername existiert. Der userMode (single/all) ist nur ein Client-seitiger Wert. Wenn das Modell serverseitig validiert wird, weiß es lediglich, dass wir einen Schlüssel angefordert haben und ob wir einen Benutzer bereitgestellt haben oder nicht.

Das sollte es verbessern. Ich werde David bitten, dies zu prüfen:

7 „Gefällt mir“