Großbuchstaben im Benutzernamen unterbrechen die Prüfung erreichbarer Erwähnungen im Composer

Bei der Untersuchung von Private Topics Plugin - #109 by thoka bin ich auf den Umstand gestoßen, dass eine Erwähnung eines Benutzers in einer eingeschränkten Kategorie nicht gemeldet wird, wenn der Benutzername Großbuchstaben enthält.

Wenn ich @SomeUser erwähne, fordert der Editor /composer/mentions.json?names[]=SomeUser&topic_id=10728 an. Im Ergebnis wird der Benutzername in Kleinbuchstaben zurückgegeben, ohne dass user_reasons gesetzt ist.

Eine Abfrage nach dem Benutzernamen in Kleinbuchstaben liefert "user_reasons": {"someuser":"category"}.

Wenn ich im Editor Kleinbuchstaben für Benutzernamen verwende, werden Warnungen für Personen mit unzureichenden Rechten angezeigt.

Verwendet man die vom Editor bereitgestellte Autovervollständigung, werden die eingegebenen Benutzernamen in Kleinbuchstaben durch Namen in Großbuchstaben ersetzt und werden daher nicht gemeldet.

3 „Gefällt mir“

Toller Fund, @thoka!

Das Problem liegt hier:

users gibt {"username_lower" => User-Objekt } zurück.

Wenn name jedoch nicht kleingeschrieben wird, existiert users[name] nicht.

Fix:

if user = users[name.downcase]
...
elsif group = groups[name.downcase]
...

Oder besser: Kleinschreibe alle Namen am Anfang der Methode, da es dort viele Probleme gibt. groups macht sauber .where("lower(name) IN (?)", @names.map(&:downcase)), aber Funktionen wie visible_group_ids_for_allowed_check, topic_allowed_group_ids, mentionable_group_ids und members_visible_group_ids verwenden alle where(name: @names), was ebenfalls Probleme mit der Groß-/Kleinschreibung einführt.

3 „Gefällt mir“

Die richtige Lösung ist

aber das ist eine zu große Änderung, als dass ich sie im Moment gerne zusammenführen würde :grimacing:

Stattdessen werde ich die „Endpunkte

1 „Gefällt mir“