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

السؤال

نشر

لما اكتب الكود بهذه الطريقة 

abort_if(Gate::denies('user_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');

هل هو نفس فكرة 

Gate::define('create-post', function (User $user, Category $category, $pinned) { 
     
     if (! $user->canPublishToGroup($category->group)) { 
         return false; 
     } 
     
     elseif ($pinned && ! $user->canPinPosts()) { 
         return false; 
     } 
     
     return true; 
});

 

 

Recommended Posts

  • 0
نشر

ليس تماما . 

ففي الشيفرة الأولى : 

abort_if(Gate::denies('user_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');

أو يكفي :

abort_if(Gate::denies('user_create'), 403);

أو أيضا : 

abort_unless( !Gate::denies('user_create'), 403);

نحن نقوم بمنع المستخدم من الوصول إلى حدث معين في حالة رفض البوابة Gate ذلك

لكن ما نقوم به هنا : 

Gate::define('create-post', function (User $user, Category $category, $pinned) { 
     
     if (! $user->canPublishToGroup($category->group)) { 
         return false; 
     } 
     
     elseif ($pinned && ! $user->canPinPosts()) { 
         return false; 
     } 
     
     return true; 
});

ضمن التابع boot في ملف App\Providers\AuthServiceProvider هو تعريف للترخيص create-post

و لتوضيح العلاقة أكثر بين الشيفرتين ينبغي ذكر أنه : 

يتم التحكم في صلاحيات و تراخصي المستخدمين عن طريق البوابات Gates , بحيث يتم تعريف البوابة بإستعمال الواجهة Gate ضمن ملف AuthServiceProvider.php في التابع boot على هذا النحو :

<?php
use App\Models\User;
use Illuminate\Support\Facades\Gate;

/**
 * تسجيل أية خدمات ترخيص
 *
 * @return void
 */
public function boot()
{
    $this->registerPolicies();
    
    # تعريف البوابة
    Gate::define('access-db', function () {
        # إعادة القيمة البوليانية المسجلة في العمود المستهدف
        return auth()->user()->is_admin;
    });
  
}

بعد ذلك يأتي إستعمالها في ترخيص الأحداث بإستعمال التابعين allows و denies على هذا النحو : 

public function index()
{
   if (! Gate::allows('access-db')) {
            abort(403);
   }

   return view('admin_db);
}

أو إختصارا : 

public function index()
{
   abort_if (! Gate::allows('access-db') ,403);

   return view('admin_db);
}

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...