Nil dereference in PostGuardian can_delete_post

PostGuardian.can_delete_post enthält eine user-Dereferenzierung, die abstürzt, wenn sie aufgerufen wird, wenn kein Benutzer angemeldet ist. Sie wird von einem Plugin aus aufgerufen, daher geschieht dies im Moment vielleicht nicht im Kern.

Sie tritt hier auf:

return true if user.in_any_groups?(SiteSetting.delete_all_posts_and_topics_allowed_groups_map)

Der Vorschlag ist, entweder den Safe Navigation Operator &. zu verwenden oder ihn zu ändern in return true if user && user.in_any_groups? ...

3 „Gefällt mir“

Könnten Sie vielleicht @system als Benutzer für dies verwenden, da es immer Berechtigungen haben sollte? (Tut Core das nicht auch?)

Ich bin mir nicht sicher, ob Sie das verstehen.

Es ist kein Problem, dass kein Benutzer vorhanden ist (und „kein Benutzer“ sollte „keine Berechtigungen“ bedeuten). Das Problem ist, dass der Code davon ausgeht, dass ein Benutzer vorhanden ist, ohne dies zu überprüfen, sodass er versucht zu sehen, ob „nichts“ in einer Gruppe ist.

1 „Gefällt mir“