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

صلاحيات لارافل

Hanan Fahad2

السؤال

Recommended Posts

  • 0

يمكنك تضمين ملفات بوتستراب بشكل طبيعي في ملف app.blade.php من الموقع الرسمي لبوتستراب, يمكنك الذهاب اليه من هنا, يمكنك نسخ الملفات من هنا أيضا
ملف css

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">

ملفات جافاسكربت 

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>

يمكنك استخدام بوتستراب بشكل طبيعي بعد ذلك
أما بالنسبة حزمة صلاحيات, يمكنك استخدام حزمة Laratrust فهي رائعة وتتيح لك ادارة الصلاحيات بشكل رائع, يمكنك تثبيتها باستخدام الأمر التالي

composer require santigarcor/laratrust

ثم لاستخراج الملفات الخاصة بالحزمة

php artisan vendor:publish --tag="laratrust"

ثم نقوم بعمل setup

php artisan laratrust:setup

ثم نقوم باعادة تحميل الملفات الخاصة بالمشروع من خلال الأمر

composer dump-autoload

ثم تهجير الملفات الخاصة بقواعد البيانات

php artisan migrate

يمكنك قراءة المزيد عنها من الموقع الرسمي لها ويمكنك الذهاب اليه من هنا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك التعامل مع الصلاحيات في لارافل عن طريق واحدة من الحزم : 

تتشابه طريقة عمل هاته الحزم في الفكرة الأساسية و تختلف من حيث بعض المميزات الإضافية .

و رغم كل ذلك يمكنك التعامل مع الصلاحيات دون الإستعانة بأي حزمة عن طريق مميزات مبنية ضمن اللارافل نفسه من مثل البوابات Gates و السياسات Policies .

كما أحب التعامل مع هذا المفهوم بشكل منفصل و مرن أكثر عن طريق معاملة مجموعات الصلاحيات كنموذج Model و كجدول بقواعد البيانات , ثم إنشاء طبقات وسيطة Middlewares  , بناءا على هذا الأخير , تقوم بالتحقق من إمتلاك المستخدم الموثق الحالي لمجموعة صلاحيات أو لا , ثم التحقق إن كانت هاته المجموعة تمتلك صلاحية ما و هكذا .. 

أي أن الأمر ممكن بكل الطرق , فكلها تشترك في المفهوم الأساسي و تتفاوت فيما بينها من ناحية بعض المميزات الإضافية .

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

اشكركم على مساعدتي في طرح ذلك ولاكن اجهل التعامل مع الصلاحيات الارافل كثيرا وحاولت احمل البكج واقف حائره اين اذهب ياليت شرح الفكرة اكثر 

https://spatie.be/docs/laravel-permission/v4/basic-usage/basic-usage

في الصفحة هذه وين احط هذول 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال hanan fahad11:

اشكركم على مساعدتي في طرح ذلك ولاكن اجهل التعامل مع الصلاحيات الارافل كثيرا وحاولت احمل البكج واقف حائره اين اذهب ياليت شرح الفكرة اكثر 

https://spatie.be/docs/laravel-permission/v4/basic-usage/basic-usage

في الصفحة هذه وين احط هذول 

جميل أنك اخترت واحدة من حزم مجموعة spatie . تقوم هاته الحزمة بتنفيذ الأمر بوساطة الأدوار عوضا عن مجموعات الصلاحيات , وتختصر بذلك الكثير . 

قبل الإستعمال تأكدي أنك قد قمت بالخطوات التالية على نحو صحيح :

  • تثبيت الحزمة :  
composer require spatie/laravel-permission
  • نشر ملفات التهجير و الإعداد : 
    php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

     

  • تنفيذ أمر التهجير :

    php artisan migrate

     

بعد ذلك نحتاج إستعمالها و ضمها للتطبيق على نحو صحيح . 

  1. سنحتاج إضافة السمة HasRoles لنموذج المستخدم User.php للإستفادة من التوابع التي توفرها هاته السمة : 
<?php 

use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles; // تضمين السمة

class User extends Authenticatable
{
    use HasRoles; // إستعمال السمة

    // ...
}

    2. الان ما علينا إلا إنشاء أدوار Roles و أذونات Permissions , بحيث تتم العملية كالتالي : 

  • يتم نسب صلاحية معينة إلى دور معين . 
  • يتم نسب دور معين إلى مستخدم معين .

مثال : 

نقوم بإنشاء الأذونات التالية : 

  • الحذف .
  • الإضافة . 
  • التعديل . 

=> نقوم بنسب الأذونات إلى الدور "Manager" .

=> نقوم بإعطاء المستخدم A الدور Manager .

و بالطبع فإنه يمكن كتابة الشيفرة الخاصة بنسب الأذونات للدور و الدور للمستخدم في أي مكان من التطبيق , وليكن متحكما خاصا نسميه AssignRolesController :

<?php 
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;

use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

class AssignRolesController extends Controller
{

   public function init()
   {
      # إنشاء دور 
      $role = Role::create(['name' => 'writer']); 
      
      # إنشاء صلاحية 
      $permission = Permission::create(['name' => 'edit articles']); 
     
     
      # عن طريق التابعين التاليين يمكن إعطاء الدور صلاحية معينة أو إعطاء الصلاحية إلى دور
      # ملاحظة : يكفي إستعمال أحدهما 
      $role->givePermissionTo($permission);
      $permission->assignRole($role);
     
      
      # إعطاء مستخدم معين الدور
      $user = App\Models\User::first();
      $user->assignRole('writer');   
   }

}

الان ما علينا إلا الوصول للتابع init لتنفيذ الأمر و إنشاء الأدوار و الأذونات .

 

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

سنتسعمل في ذلك مفهوم الطبقات الوسيطة Middlewares , بحيث تتولى عملية التحقق من إمتلاك المستخدم لدور أو صلاحية معينة . 

و أبسط طريقة لعمل ذلك هي عن طريق المثال التالي : 

Route::group(['middleware' => ['can:edit articles']], 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...