Ausrufezeichen und Sonderzeichen in Benutzernamen

Hallo.

Wir sind dabei, eine große Community auf Discourse von vb3 zu migrieren.
Viele Benutzernamen – etwa 1.200 – enthalten das Ausrufezeichen „!“ und ich konnte keine Option finden, es wieder zu aktivieren.
Wir haben bereits „Unicode-Benutzernamen“ aktiviert, aber ohne Erfolg.
Gibt es eine fertige Lösung für dieses Problem?

Danke!

1 „Gefällt mir“

Nein. Das Ändern von legalen Zeichen in Benutzernamen ist keine wirkliche Option. Ich denke, sie werden weniger aufregende Benutzernamen haben müssen.

Wow, das scheint eine ziemliche Nachlässigkeit zu sein… Gibt es dafür eine technische Erklärung? Oder könnten wir das mit einem Plugin oder einem Fork lösen?

Ich habe die Entscheidung nicht getroffen, aber es gibt viele Systeme, für die ein ! kein gültiges Zeichen für einen Benutzernamen ist. Es ist gut möglich, dass, wenn Sie versuchen würden, es in einem Plugin (oder einer Abspaltung, was eine sehr, sehr schlechte Idee wäre, wenn Sie Discourse jemals wieder aktualisieren wollen) zuzulassen, es schwierig sein wird.

Das ! hat in vielen Kontexten eine besondere Bedeutung und ich vermute, dass, wenn Sie nur den Benutzernamen-Validator ändern, eine ganze Menge anderer Dinge kaputt gehen werden.

Ich verstehe. Es ist etwas, das jedoch angegangen werden sollte. Alle anderen BB-Lösungen erlauben dieses Zeichen im Benutzernamen, und es ist in Gaming-Communities üblich. Benutzername und Benutzer-ID sollten als separate Einheiten behandelt werden, um solche Einschränkungen zu vermeiden. Wir haben rund 95.000 Mitglieder und die Kontaktaufnahme mit 1.200 von ihnen, um ihren Benutzernamen zu ändern, wird eine echte PITA (Pain in the Ass) sein. Danke trotzdem für die Hilfe!

1 „Gefällt mir“

Ich habe Dutzende, vielleicht über hundert Importe durchgeführt. Ich achte genau darauf, wenn Leute hier nach Importen fragen. Dies ist das erste Mal, dass ich mich erinnere, dass sich jemand darüber beschwert hat.

Sie können allen sagen, sie sollen sowohl ihren Benutzernamen als auch ihre E-Mail-Adresse ausprobieren (viele von ihnen werden das auch nicht wissen). Es ist eine gute Wette, dass Sie einige andere Benutzernamen haben, die sich geändert haben.

Dies gibt Ihnen alle Benutzernamen, die sich geändert haben:

UserCustomField.where(name: 'import_username').pluck(:value)
2 „Gefällt mir“

Ich habe ein paar Themen gefunden:

https://meta.discourse.org/t/username-restrictions/126664

Es wird wahrscheinlich viel mehr als nur Ausrufezeichen sein. Es scheint eine seltsame Einschränkung zu sein, da man diese Zeichen überall sonst verwenden kann.

Vielen Dank für Ihre Hilfe.

1 „Gefällt mir“

Es ist erwähnenswert, dass Namen und Benutzernamen nicht dasselbe sind. Benutzernamen werden in URL-Pfaden verwendet, zum Beispiel:

https://meta.discourse.org/u/pfaffman/summary

Ein Ausrufezeichen ist kein gültiges Zeichen in einer URL, während Zeichen wie ? & spezielle Zwecke in der URL-Struktur haben und daher ebenfalls kein Teil eines Benutzernamens sein können. Dies ist nicht spezifisch für Discourse, jedes System, das den Benutzernamen in der URL-Struktur verwendet, muss dies berücksichtigen.

Ein Benutzername darf kein Ausrufezeichen enthalten, aber der Name kann eines enthalten, was Sie in der Benutzeroberfläche priorisieren können.

3 „Gefällt mir“

macht absolut Sinn, @Stephen, danke für die Klarstellung.

Ich denke, wir könnten einfach das Import-Skript ändern, um etwas Ähnliches zu tun:

username_original = username
username = @htmlentities.decode(user["username"]).strip

{
          id: user["userid"],
          name: username_original,
          username: username,
          password: password,
[...}

Und in den Discourse-Einstellungen die Priorität für den Benutzernamen “name” aktivieren, falls er vorhanden ist, gegenüber dem Benutzernamen.

3 „Gefällt mir“

Zusätzlich zu diesem Punkt sind Benutzernamen für @Erwähnungen gedacht, daher wird erwartet, dass Benutzernamen einfach und leicht einzugeben sind. Deshalb erlauben wir standardmäßig nur ASCII-Zeichen (obwohl dies durch die Einstellung unicode_usernames auf Unicode erweitert werden kann, aber immer noch keine Satzzeichen).

Beachten Sie, dass dieses Migrationsskript die nicht-Bulk-Migrationsskript-Basisklasse verwendet, die dies mit jedem Benutzereintrag tut, der von der von Ihnen verlinkten Methode generiert wird:

welche alle ungültigen Zeichen aus Benutzernamen entfernt.

Es gibt viele Stellen im Code, die bestimmte Annahmen über Benutzernamen treffen (@Erwähnung-Parsing, Änderung von Benutzernamen usw.), weshalb wir diese Einschränkungen durchsetzen.

Wie Stephen sagt, sind Benutzernamen nicht der Ort, um die Persönlichkeit des Benutzers zu zeigen; dafür gibt es die Felder Name und Flair :slight_smile:

7 „Gefällt mir“

Es gibt immer noch eine ganze Reihe von Ausnahmefällen, die schwer zu handhaben sind, wenn es so ist.
Namen sind nicht eindeutig. Wenn wir dem Namen im Layout Priorität einräumen, können Sie sich vorstellen, wie das in einem Message Board voller unreifer Teenager ablaufen würde, die den ganzen Tag spielen und trollen :slight_smile:

Es ist völlig in Ordnung zu sagen, dass es sich um ein Problem mit niedriger Priorität handeln könnte, aber es ist etwas, das eindeutig etwas Überlegung und Arbeit verdient und sicherlich keine „Funktion“ oder etwas, das einen Vorteil gegenüber der Möglichkeit bietet, einen eindeutigen Namen ohne starke Einschränkungen zu wählen, wie jede andere BB-Software, die es schon seit einiger Zeit gibt.

1 „Gefällt mir“

Wenn der Benutzer pfaffman! ist, wäre die URL normalerweise:
https://meta.discourse.org/u/pfaffman!/summary
Zumindest hat jedes andere CMS, an dem ich je gearbeitet habe, so funktioniert

1 „Gefällt mir“

Oh, cool! Vorherige Arbeit. :+1:

Würden Sie bitte einige der Open-Source-CMS-Projekte teilen, die Sie verwendet haben? Wir können sie uns ansehen und sehen, wie sie Permalinks und Benutzerreferenzen handhaben, aus ihren Bemühungen lernen. :slight_smile:

Obwohl… ich frage mich, ob Content-Management-Systeme genau in den gleichen Topf wie Community-Foren fallen? :thinking:

Bezieht sich “vb3” auf vBulletin?

Yep

Außerdem ist die Erwähnung von Sonderzeichen, die kodiert werden, nichts, was nur bei CMS vorkommt, es ist nur eine Standardkodierung: Percent-encoding - Glossary | MDN

1 „Gefällt mir“

Aber wie würden wir dann Leute erwähnen, @Crius?!

:point_up: :smiley: :point_down:

Aber wie würden wir dann Leute erwähnen, @Crius?!

Würden wir @maiki!, um jemanden mit dem Benutzernamen maiki! zu erwähnen? :thinking: Wie funktioniert das in vBulletin?

1 „Gefällt mir“

vBulletin 3 hat diese Funktionen nicht und vBulletin 5… Ich habe keine Ahnung, ob es diese Funktion überhaupt hat, da es sich um eine Software handelt, die in Bezug auf moderne Funktionen eindeutig zurückgeblieben ist.

Wenn Sie jemanden in Discourse anpingen, erscheint eine automatische Vorschlagsliste. Sie müssen sich keine Sorgen machen, den vollständigen Spitznamen eingeben zu müssen.
Bearbeiten: Letztendlich bedeutet dies, dass die Vorschlagsfunktion die Liste der Benutzernamen dekodiert, bevor sie diese vorschlägt, wenn Sie es wirklich wollen, oder die Eingabe (der Benutzer, der den Teil eingibt) kodiert, damit sie den Benutzernamen entsprechend suchen kann.

Ich meine, wir können darüber streiten, wie viel Arbeit und Mühe das kostet, aber nicht darüber, „ob“ es möglich ist.

Auf jeden Fall weiß ich nicht, ob es nur daran liegt, dass die Medien die Stimmung schlecht vermitteln, aber all diese letzten Antworten fühlten sich irgendwie „feindselig“ an. Leute kommen zu meta.discourse, um Hilfe zu suchen und Dinge zur Verbesserung vorzuschlagen. Wenn Sie nicht zustimmen, können Sie den Thread einfach ignorieren und weitermachen.

Außerdem habe ich vergessen hinzuzufügen. Wenn PRs für Discourse offen sind, kann ich versuchen, daran in einem Fork zu arbeiten und einen PR zu eröffnen. Zugegeben, ich bin kein Ruby-Entwickler, aber ich habe mehrere Jahre als Softwareentwickler / Plattformentwickler gearbeitet. Ich würde mich freuen, es versuchen und dazu beitragen zu können :slight_smile:

3 „Gefällt mir“

Nur zur Information, ! sind keine verbotenen Zeichen in URLs, wie oben erwähnt. Ich weiß nicht, woher diese Vorstellung kommt.

Ruby scheint jedoch ? und ! in seinen Funktionen zu verwenden, was ehrlich gesagt seltsam ist (zumindest in meinen über 20 Jahren Softwareentwicklung), aber jede Sprache hat ihre eigenen Eigenheiten :slight_smile:

Was darauf hindeuten könnte, warum ! verboten ist. Ich muss tiefer in den Discourse-Quellcode eintauchen, um zu verstehen, ob dies ein spezifisches Problem war, das nicht gelöst werden konnte, oder nur etwas, das übermäßig verboten wurde, um potenzielle Probleme zwischen Benutzernamen und Ruby in einigen Randfällen zu vermeiden.

3 „Gefällt mir“

Entschuldigung, dass ich diesen alten Thread wiederbelebe, aber ich habe dasselbe Problem und vermute, dass |, [ und ] ebenfalls ungültige Zeichen für Benutzernamen sind und irgendwie nicht aktiviert werden können?

Ich bin dabei, ein altes Gaming-Forum von phpBB3 nach Discourse zu migrieren, und viele Benutzernamen sind wie Clan|Nickname oder [Clan]Nickname.

1 „Gefällt mir“

Ich würde das Skript bearbeiten, um danach zu suchen und sie durch ein legales Zeichen wie _ oder - zu ersetzen. Ich denke, es würde sie einfach entfernen. Sie können sich den Code des vorgeschlagenen Benutzernamens ansehen.

Als ich mein erstes Forum nach Discourse migrierte, bemerkte ich, dass ungültige Zeichen, beginnend mit Leerzeichen, aber auch andere, durch _ ersetzt wurden. Aber in diesem Forum war das häufigste ungültige Zeichen ein Leerzeichen und nicht sehr oft, so dass es nicht das Problem war, das es jetzt sein könnte. Jedenfalls kann dies kein Hinderungsgrund sein. Vielleicht gebe ich den alten Benutzernamen im Namensfeld ein. Wir werden sehen - wenn ich das andere Problem gelöst habe, dass mein Import-Container nicht erstellt wird…