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

السؤال

نشر

في لارافيل Laravel يمكن عمل authentication للمستخدمين الموجودين في الجدول users، ولكن لدي جدول باسم admins ويحتوي على مجموعة من المستخدمين، وأريد أن أقوم بعمل authentication لأحد المستخدمين من هذا الجدول.

فكرت في عمل AuthServiceProvider  خاص بي لكي أتمكن من هذا الأمر، ولكن لا أعرف من أين أبدأ أو كيف أقوم بعمله.

كيف أقوم بعمل authentication للمستخدمين الموجودين في جدول مختلف عن users في لارافيل Laravel؟

Recommended Posts

  • 1
نشر

ما تتحدث عنه يدور حول فكرة authentication guard او حراس المصادقة. يحدد هذا الحارس كيفية تعامل لارافيل مع الطلبيات المختلفة. مثال: يحرس او يتأكد من امتلاك المستخدم رمزا مميزا يشير الى بياناته المسجلة والموثقة في جدول المستخدمين.

في حالة الحاجة الى انشاء حراس مخصصين وليكن حارسا خاصا بتسجيل دخول المستخدمين المشرفين فقط. يمكن تعريف ذلك في مصفوفة guards في ملف الاعداد app/config.php :

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

      'admin_guard' => [
          'driver' => 'session',
          'provider' => 'admin_users_provider',
      ],
 ],

لاحظ اننا نشير الى موفر خدمة نرهنه بالحارس admin_guard. بمعنى انه يجب ايضا تعريف هذا الموفر. يكون ذلك بذات الملف في مصفوفة providers:

'providers' => [
      'users' => [
          'driver' => 'eloquent',
          'model' => App\Models\User::class,
      ],

      'admin_users_provider' => [
          'driver' => 'eloquent',
          'model' => App\Models\Admin::class,
      ],
],

بعد هذا سيمكنك مباشرة استعمال هذا الحارس عن طريق حقن اسمه كمعامل في التابع guard لـ Auth:

$data = ['email' => $request->email, 'password' => $request->password];

if (Auth::guard('admin_guard')->attempt($data)) {
   return redirect(route('admin.dashboard'));
}

في حالة الحاجة الى جعل هذا الحارس حارسا افتراضيا قم باسناد اسمه الى القيمة guard في المصفوفة defaults من ملف اعداد عمليات المصادقة auth.php :

'defaults' => [
    'guard' => 'admin_guard',
    'passwords' => 'users',
],

استفد امثر من هاته الاجابة شرح guards او guard

تعرف أيضا اكثر عن الاستيثاق في لارافيل

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...