هذا نموذج نموذجي لبناء لوحة إدارة Laravel 8.0 مع سمة AdminLTE 3.0، وAlpinejs 2.0، وLivewire 2.0، المدعوم بالاختبارات وفروع الميزات الاختيارية.
يمكنك التحقق من هذا الريبو وأنا أعمل بنشاط على Laravel Castra. نفس الفكرة، وأدوات مختلفة (Hotwire Turbo).
في بعض الأحيان تكون الحزم كبيرة جدًا أو مرهقة جدًا للاستخدام. وفي أحيان أخرى، لا تحتوي الحزمة على ميزة مهمة تبحث عنها وتقوم ببعض الاختراقات للالتفاف عليها.
ما تفتقده هو التحكم في الكود، والآن لديك ذلك! لا تعجبك طريقة إضافة مستخدم جديد. لا مشكلة. يمكنك تعديل الكود كيفما تشاء. لا مزيد من تفرع الحزم والعبث برموزها. تتمثل الفكرة في إنشاء فروع للميزات القياسية وإتاحتها للآخرين لدمجها في فرعهم الرئيسي.
فيما يلي قائمة بفروع الميزات المدعومة. ومن خلال دمجها في اللعبة الرئيسية، يمكنك فتح ميزات جديدة.
بعد تثبيت Laravel يجب عليك تشغيل هذه الأوامر:
git clone https://github.com/jcergolj/laravellte.git
composer install
cp .env.example .env
php artisan key:generate
npm install
npm run dev
composer cghooks update
php artisan migrate:fresh --seed
دعونا نواجه الأمر. في بعض الأحيان نكون قذرين، ولا نهتم بالشفرة بشكل أفضل. لقد أضفت بعض الحزم المفيدة (أليس هذا مثيرًا للسخرية) لتخفيف العبء عن المطور قدر الإمكان.
"php artisan insights --no-interaction --min-quality=90 --min-complexity=85 --min-architecture=90 --min-style=95"
بالنسبة لإجراءات CRUD، قد تفكر في استخدام أمر سقالة الملفات المدمج. يقوم بإنشاء ملفات لإجراءات الفهرس والإنشاء والعرض والتحرير والحذف مثل هذا:
php artisan make:ltd-component bla --index --create --show --edit --delete
يمكنك حذف أي من الخيارات. إذا كنت ترغب في ذلك، يمكنك تحديث ملفات stubs
كما تريد. توجد تعليقات في ملفات سقالة تعمل بمثابة تذكير لك بتعديل الكود. يمكنك العثور عليها بعد ذلك عن طريق كتابة: index-review
، create-review
، show-review
، edit-review
، delete-review
. لا يتم تضمين سقالات المصنع والنموذج في هذا الأمر.
يستخدم Laravelte نظام الترخيص القائم على الأدوار. يمكن فقط للمستخدمين الذين لديهم دور المسؤول إضافة أدوار جديدة وتعيين أذونات لها.
بالنسبة إلى أذونات الموارد الجديدة، تتم إضافتها من خلال PermissionsTableSeeder. وفقًا للاتفاقية، فإن أنواع الأذونات الرئيسية هي الفهرس والإنشاء والتحرير والعرض والحذف باستخدام المورد في بادئة الجمع. على سبيل المثال: users.index . وبعد قولي هذا، أنت حر في إضافة ما يخصك. ومع ذلك، سيتعين عليك مراجعة/تعديل الكود.
بناءً على الاصطلاح، يجب أن تكون أسماء المسارات من بين تلك الأنواع: الفهرس ، والإنشاء ، والتحرير ، والعرض ، والحذف . انظر المثال.
بالنسبة لمكونات Livewire، فإن اصطلاح تسميتها هو كما يلي: يجب عليك استخدام أحد هذه الأنواع متبوعًا باسم المورد ثم المكون. على سبيل المثال، IndexUserComponent يجب أن تستخدم كافة مكونات Livewire سمة HasLivewireAuth. هنا التنفيذ.
عند إضافة إذن إلى الدور، يوجد ملف إضافي يسمى Owner_restricted . إذا كان الحقل المقيد للمالك صحيحًا ، فيمكن لأي مستخدم لصفحة الفهرس بهذا الإذن رؤية الموارد الخاصة به فقط. ومع ذلك، لكي يعمل هذا، يجب أن يكون لدى المورد ملف Owner_id وإرفاق VisibleTo العمومي في طريقة التمهيد.
إذا كان الحقل المقيد للمالك صحيحًا بالنسبة لأنواع العرض والتحرير والحذف ، فيمكن للمستخدم تعديل الموارد التي يمتلكها فقط.
بالنسبة لأنواع الإنشاء، يتم تجاهل المالك المقيد .
في جوهرها يوجد ForRouteGate الذي يتعامل مع التفويض. الإشارة المشرفة تذهب إلى التفويض الوسيط.
بالنسبة إلى دور المسؤول، لا يتم تطبيق قيود الأذونات.
مرخص بموجب ترخيص MIT
يانيز سيرجولج | هوراسيو ديجيورجي | كريس طومسون | مادوكا جايالات |