الأحرف الكبيرة في اسم المستخدم تكسر فحص الذكر القابل للوصول في المحرر

اكتشاف رائع @thoka!

المشكلة هنا

users تُرجع {"username_lower" => كائن مستخدم }

ومع ذلك، إذا لم يتم تحويل name إلى أحرف صغيرة، فإن users[name] غير موجود.

الحل:

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

أو الأفضل: قم بتحويل جميع الأسماء إلى أحرف صغيرة في بداية الدالة، لأن هناك العديد من المشكلات فيها. فبينما تتعامل groups بشكل جيد مع .where("lower(name) IN (?)", @names.map(&:downcase))، فإن الدوال مثل visible_group_ids_for_allowed_check، وtopic_allowed_group_ids، وmentionable_group_ids، وmembers_visible_group_ids تستخدم جميعها where(name: @names)، مما يُدخل مشكلات تتعلق بحساسية الأحرف أيضًا.

3 إعجابات