اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

بشكل بسيط:

  • من المفترض أن يكون لديك رابط في أحد عروضك ينتقل إلى صفحة "admin.profile".
  • عند النقر على هذا الرابط، سيتم تنفيذ طريقة info() في وحدة التحكم "AdminController".
  • ستقوم طريقة info() بالحصول على المستخدم المُصادق عليه من الحارس "admin".
  • ستقوم طريقة info() بعد ذلك بعرض "admin.profile" مع إرسال المستخدم المُصادق عليه إلى العرض.

حيث أنّ auth() عبارة دالة مساعدة موجودة في Laravel تُستخدم للوصول إلى واجهة المستخدم المُصادق عليها، وguard() هي طريقة على واجهة المستخدم المُصادق عليها تُستخدم لتحديد الحارس الذي يجب استخدامه وهو "admin".

أما user() هي طريقة على الحارس تُستخدم للحصول على المستخدم المُصادق عليه.

والهدف هو الحصول على المستخدم المُصادق عليه من الحارس "admin" واستخدام المستخدم المُصادق عليه بعد ذلك في عرض "admin.profile".

ويُفترض أن يكون لديك حارس مُسمى "admin" مُعرّف في ملف config/auth.php، ويجب أن يكون المستخدم المُصادق عليه مُسجلاً في قاعدة البيانات.

  • 0
نشر
بتاريخ 13 دقائق مضت قال Mustafa Suleiman:

بشكل بسيط:

  • من المفترض أن يكون لديك رابط في أحد عروضك ينتقل إلى صفحة "admin.profile".
  • عند النقر على هذا الرابط، سيتم تنفيذ طريقة info() في وحدة التحكم "AdminController".
  • ستقوم طريقة info() بالحصول على المستخدم المُصادق عليه من الحارس "admin".
  • ستقوم طريقة info() بعد ذلك بعرض "admin.profile" مع إرسال المستخدم المُصادق عليه إلى العرض.

حيث أنّ auth() عبارة دالة مساعدة موجودة في Laravel تُستخدم للوصول إلى واجهة المستخدم المُصادق عليها، وguard() هي طريقة على واجهة المستخدم المُصادق عليها تُستخدم لتحديد الحارس الذي يجب استخدامه وهو "admin".

أما user() هي طريقة على الحارس تُستخدم للحصول على المستخدم المُصادق عليه.

والهدف هو الحصول على المستخدم المُصادق عليه من الحارس "admin" واستخدام المستخدم المُصادق عليه بعد ذلك في عرض "admin.profile".

ويُفترض أن يكون لديك حارس مُسمى "admin" مُعرّف في ملف config/auth.php، ويجب أن يكون المستخدم المُصادق عليه مُسجلاً في قاعدة البيانات.

لو نرجع لوراء شوي انا عندي حارس اسمه admin وموجود بقاعدة البيانات لكن وش فكرة الحارس ؟ هذي image.png.c6b4c8997ace88159cce04fee1549db4.png

 

  • 0
نشر

من خلاله نستطيع تحديد من يمكنه الوصول إلى أجزاء مختلفة من التطبيق وبالتالي يمكن إنشاء حراس مختلفين بمستويات مختلفة من الوصول.

وبالتبعية تستطيعي عرض محتوى مختلف للمستخدمين المُصادق عليهم اعتمادًا على الحارس الذي يستخدمونه.

  • 0
نشر
بتاريخ 7 دقائق مضت قال Mustafa Suleiman:

من خلاله نستطيع تحديد من يمكنه الوصول إلى أجزاء مختلفة من التطبيق وبالتالي يمكن إنشاء حراس مختلفين بمستويات مختلفة من الوصول.

وبالتبعية تستطيعي عرض محتوى مختلف للمستخدمين المُصادق عليهم اعتمادًا على الحارس الذي يستخدمونه.

ممكن تشرح لي هذي الجزئية ؟ تبع الحارس image.png.a25b6eb0946ee0003c08f59e3e72542a.png

  • 0
نشر
بتاريخ 15 دقائق مضت قال Atheer Bis:

لو نرجع لوراء شوي انا عندي حارس اسمه admin وموجود بقاعدة البيانات لكن وش فكرة الحارس ؟ هذي image.png.c6b4c8997ace88159cce04fee1549db4.png

 

يمكن فهم كيفية عمل الحارس (Guard) وكيفية تنفيذه في قاعدة البيانات من خلال هذا المثال أين أشرح فيه الكود:

مفهوم الحرّاس (Guards):  في Laravel، يُعتبر الحارس جزءًا من نظام المصادقة ويُستخدم لتحديد كيفية مصادقة المستخدمين. فمثلا في الكود الذي قدمته، لديك حارسين:

  •    'web': يستخدم لمستخدمي الويب العاديين.
  •    'admin': يستخدم لمستخدمي الإدارة.

 كل حارس يحتوي على موفر لعملية المصادقة بحيث يُستخدم موفر المصادقة لاسترجاع بيانات المستخدم من قاعدة البيانات والتحقق من هويته.
  في الكود الخاص بك، تم تعريف الحارسين 'web' و 'admin' مع موفرات المصادقة الخاصة بهما. بحيث يُحدد driver كيفية المصادقة أين يتم استخدام 'session' driver لكلتا الحارسين.

أما بخصوص هذا الكود في قاعدة البيانات:

 'guards' => [
   'web' => [
     'driver' => 'session',
     'provider' => 'users', 
   ],
   'admin' => 'session',
   'provider' => 'admins',
 ],

يفترض أن لديك جدولين في قاعدة البيانات: جدول 'users' للمستخدمين العاديين وجدول 'admins' للمستخدمين الإداريين. يتم تخزين بيانات المستخدمين في الجدولين بشكل منفصل، حيث يحتوي كل منهما على الحقول اللازمة مثل الاسم، البريد الإلكتروني، كلمة المرور، إلخ.

لنأتي إلى مفهوم موفرات المصادقة، 'provider' هنا تعني اسم الموفر الذي يقوم بإحضار بيانات المستخدمين من قاعدة البيانات، ويتم تحديد 'users' كموفر للمستخدمين العاديين و 'admins' كموفر للمستخدمين الإداريين. عندما يحاول المستخدم تسجيل الدخول، يتم تحقق من بياناته مقابل الحارس المناسب وموفره.

إذا كانت المصادقة ناجحة، يتم تسجيل دخول المستخدم وتخزين بياناته في الجلسة أو غيرها من وسائل التخزين التي تم تعيينها في driver.

وباختصار، يتيح لك Laravel تحديد سلوك مختلف لعملية المصادقة لأنواع مختلفة من المستخدمين (على سبيل المثال: المستخدمين العاديين والمستخدمين الإداريين) من خلال استخدام الحراس وموفرات المصادقة المختلفة.

بتاريخ 18 دقائق مضت قال Atheer Bis:

ممكن تشرح لي هذي الجزئية ؟ تبع الحارس image.png.a25b6eb0946ee0003c08f59e3e72542a.png

حارس الويب (Web Guard) مثلا هنا يستخدم session driver لحفظ بيانات المصادقة.
 يستخدم موفر المستخدمين 'users'، مما يعني أنه سيبحث عن المستخدمين في جدول 'users' في قاعدة البيانات.

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

حارس الإدارة (Admin Guard) يستخدم session driver لحفظ بيانات المصادقة.
ويستخدم موفر المستخدمين 'admins'، مما يعني أنه سيبحث عن المستخدمين في جدول 'admins' في قاعدة البيانات.

  'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],

حارس رؤساء الأقسام (Head of Department Guard) يستخدم session driver لحفظ بيانات المصادقة.
ويستخدم موفر المستخدمين 'head_of_department'.

'head_of_department' => [
        'driver' => 'session',
        'provider' => 'head_of_department',
    ],

أما حارس طلاب الثانوية العامة (HSC Guard)، يستخدم session driver لحفظ بيانات المصادقة.
ويستخدم موفر المستخدمين 'hscs'.

'hsc' => [
        'driver' => 'session',
        'provider' => 'hscs',
    ],

حارس عمداء الكليات (Dean Guard) يستخدم hscs driver لحفظ بيانات المصادقة.
هنا لا يوجد موفر محدد، ولكن يمكن تخصيصه ليبحث عن بيانات المستخدمين في الجدول المناسب.

 'dean' => [
        'driver' => 'hscs',
    ],

وفي الأخير حارس طلاب الكليات الأخرى (Stuff Student Guard) ويستخدم session driver لحفظ بيانات المصادقة، كما يستخدم موفر المستخدمين 'stuff_student'.

    'stuff_student' => [
        'driver' => 'session',
        'provider' => 'stuff_student',
    ],
],

هذه التكوينات تحدد كيفية تخزين بيانات المصادقة وكيفية البحث عن المستخدمين في قاعدة البيانات بناءً على نوع المستخدم والسياق الذي يتم فيه تسجيل الدخول.

  • 0
نشر

مرحبا
 

public function info()
{
    //  auth() للحصول  المصادقة ثم يتم استخدام الواجهة admin
    $admin = auth()->guard('admin')->user();
    return view('admin.profile', compact('admin'));
}

:

 هنا auth نستتخدامها مع المصادقة في Laravel للوصول إلى المستخدم الحالي
. يتم استخدام واجهة المصادقة admin للوصول إلى مستخدم المشرف (admin)
اذن في السطر الذي طلب فهمه هو المقصور الوصول للمستخدم المشرف وفي السطر الذي يليه
 

return view('admin.profile', compact('admin'))

 يتم تحميل الصفحة admin.profile وتمرير المتغير admin إلى الصفحة باستخدام الدالة compact()

اما بالسبة guards

guards  تُستخدم لتحديد كيفية مصادقة المستخدمين وكيفية استرجاعهم من مصادر بيانات محددة
ويقوم بتحديدها كلاتالي :

web
  وهنا بوفر استخدام session كاداة للتوصيل المصداقية وتخزينها وال provider هو اليوزر لمصداقية اليوزر العادي

admin
هنا ايضا يستخدم session وال provider هوا admin ولمصادقية المشرف

يمكنك استخدام المصادقة واسترجاع المستخدمين بناء على guards   الذي تم تحديده في كل حالة

 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...