أنت تعمل على نظام مصادقة مستخدم لأحد التطبيقات. يستخدم النظام السبات للتفاعل مع قاعدة البيانات واسترداد معلومات المستخدم.

في مقتطف التعليمات البرمجية المحدد، يتم إنشاء مُسجل ويتم توصيل كائن UserDao تلقائيًا. توفر فئة UserDao طرقًا لاسترداد معلومات المستخدم من قاعدة البيانات باستخدام Hibernate. يشتمل مقتطف الشفرة أيضًا على طريقة تم تجاوزها، وهي LoadUserByUsername، والتي تأخذ اسم المستخدم كمعلمة وتكون مسؤولة عن تحميل تفاصيل المستخدم. تستخدم هذه الطريقة كائن UserDao لاسترداد معلومات المستخدم من قاعدة البيانات وتسجيل اسم المستخدم ودور المستخدم باستخدام المسجل.

مهمتك هي إكمال طريقة التحميلUserByUsername عن طريق إضافة تعليمات برمجية لإنشاء قائمة بكائنات GrantedAuthority بناءً على دور المستخدم. تمثل واجهة GrantedAuthority السلطة الممنوحة للمستخدم ويتم استخدامها لأغراض الترخيص.

أكمل طريقةloadUserByUsername بتنفيذ الخطوات التالية:
1. قم باسترجاع معلومات المستخدم من قاعدة البيانات باستخدام كائن userDao واسم المستخدم المقدم.
2. قم بإنشاء قائمة فارغة بكائنات GrantedAuthority.
3. تحقق من دور المستخدم وأضف السلطة المقابلة إلى قائمة كائنات GrantedAuthority. يتم تخزين أدوار المستخدم في كائن المستخدم الذي تم استرداده من قاعدة البيانات. يمكنك الوصول إلى دور المستخدم باستخدام طريقة getUserRole لفئة المستخدم.
4. قم بإرجاع كائن UserDetails الذي يحتوي على تفاصيل المستخدم وقائمة كائنات GrantedAuthority.

ملاحظة: تم تعريف فئة UserDao وفئة المستخدم بالفعل ويمكن استخدامهما كما هما.

اكتب التعليمات البرمجية لتنفيذ طريقة التحميلUserByUsername بناءً على المتطلبات المحددة.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}