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

السؤال

نشر

السلام عليكم ورحمة الله وبركاته 

في حالة لدي اثنين مستخدمين للنظام مدير النظام وطالب  في لوحة تحكم اريد مدير يظهر له كل شي طالب بعض خيارات هل افضل عملها  عن طريق auth او Middleware وكيف يمكن عمل دلك 

 

Recommended Posts

  • 0
نشر

الأمر يتم من خلال مزيج من Authentication و Authorization.

أي الـ Authentication تتأكد من هوية المستخدم الذي يحاول الوصول إلى النظام (هل هو مدير النظام أو طالب)، والـ Authorization تحدد هل المستخدم المخول له الوصول إلى مورد أو إجراء معين (مثل عرض لوحة التحكم، تعديل البيانات، إلخ).

ويوجد مكتبات لتسهيل الأمر وتنفيذ المنطق الذي تريده، ستجد تفصيل هنا:

 

  • 0
نشر

لتحقيق هذا النوع من التحكم في الوصول عادة نقوم باستخدام كلا من نظام التوثيق (Auth) وMiddleware يمكن استخدام نظام التوثيق لتحديد من هو المستخدم (مدير أو طالب) وعادة ما يتم ذلك عند تسجيل الدخول بعد ذلك يمكنك تخزين نوع المستخدم في الجلسة أو في التوكن.

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

سأسترسل في الطريقة عبر مثال توضيحي، أولا تقوم بإنشاء Middleware للتحقق من نوع المستخدم:

php artisan make:middleware CheckRole

ثم داخله نضع التالي، وفي الأخير نعيد المستخدم الذي لا يمتلك أي صلاحيات إلى الصفحة الرئيسية:

public function handle($request, Closure $next, $role)
{
    if (auth()->check() && auth()->user()->role == $role) {
        return $next($request);
    }

    return redirect('/home');
}

الخطوة التالية هي التسجيل في Kernel من خلال تسجيل Middleware في app/Http/Kernel.php هكذا:

protected $routeMiddleware = [
    'role' => \App\Http\Middleware\CheckRole::class,
];

وهذا نموذج لاسخداماته في الRoutes:

Route::group(['middleware' => ['role:admin']], function () {
    // المسارات الخاصة بالمدير
});

Route::group(['middleware' => ['role:student']], function () {
    // المسارات الخاصة بالطالب
});

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...