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

السؤال

نشر

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

public function __construct()
{
    if (!Auth::user()->hasPermission('usergroups')) {
        abort(404);
    }
}

ترجع Auth :: user القيمة null عند استدعائها من الباني.لكن إن استخدمتها  في أي تابع آخر ، فإنه يعيد المستخدم الذي قام بتسجيل الدخول حاليًا، لماذا لا تعمل في الباني.

Recommended Posts

  • 0
نشر

لا يمكن الوصول إلى session في construct() بسبب أنّ construct يعمل قبل middleware

ولحل هذه المشكلة نقوم بالتحقق من الـ middleware بداخل الـ construct

كالآتي:

    protected $user;

    public function __construct()
    {
        $this->middleware(function ($request, $next) {
            $this->user = Auth::user();

            return $next($request);
        });
    }

 

  • 0
نشر

و للإضافة فالدالة  

Auth()

لا  تعمل إلا إذا كانت داخل middleware  web يعني في ملف routes الخاصة بك يكفي إضافة الكود التالي:

Route::group(['middleware' => 'web'], function () {
    //   routes هنا تكتب جميع 
    //  ستقوم بإرجاع المستخدم اللذي سجل دخوله Auth::user() أي متحكم يكتب هنا الدالة 
});

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...