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

laravel Gate

Hanan Fahad2

السؤال

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...