Hafsa Aly نشر 11 أغسطس 2022 أرسل تقرير نشر 11 أغسطس 2022 لدي مشروع لادارة المعلمين يتم ادارته من خلال (المدرسة-الادارة) اريد عمل صلاحيةلكل مدرسة ان ترى المعلمين الخاصين بها فقط من الdb وايضا كل ادارة ترى المعلمين الموجودين فقط بادارتها ولاترى باقي المعلمين من الdb كيف افعل ذلك 2 اقتباس
0 محمد عاطف17 نشر 11 أغسطس 2022 أرسل تقرير نشر 11 أغسطس 2022 يمكنك استخدام البرمجيّات الوسيطة (Middleware) في Laravel فلنفترض أن العنوان الخاص بإظهار المعلمين كالتالى Route::get('/teacher/{id}') هنا يمكننا إنشاء و تمرير ال Middleware كالتالى Route::get('/teacher/{id}')->middleware('employee') هنا قمنا بتمرير Middleware يسمى employee وقبل تنفيذ الكود الخاص بهذا العنوان فإن ال Middleware سينفذ أولا. ولإنشاء ال Middleware نستخدم الامر التالى php artisan make:middleware CheckEmployee وسوف يقوم بإنشاء ملف ال Middleware التالى في هذا المجلد app/Http/Middleware <?php namespace App\Http\Middleware; use Closure; class CheckEmployee { public function handle($request, Closure $next) { $user = User::find($request->route('id')); if(!$user) return abort(404); if ($user->shool_id !== Auth::user()->id) { return abort(401); } return $next($request); } } هنا قمنا بإفتراض ان جدول المعلم لديه عمود school_id خاص بالمدرسة التابع لها وقمنا بالتحقق إذا كان هو نفس ال id الخاص بالمدرسة التى تقوم بتسجيل الدخول حاليا وإن لم يكن نفس ال id فسوف نقوم بتحويله الى صفحة غير مخول بالدخول إلي هذه الصفحة . ونفس الامر أيضا مع الإدارة. وهذا المقال يوضح طريقة إنشاء وإستخدام ال Middleware يمكنك الإطلاع عليه Middleware 1 اقتباس
0 Adnane Kadri نشر 11 أغسطس 2022 أرسل تقرير نشر 11 أغسطس 2022 بجانب ما اقترح المدرب عاطف، يمكنك الاستعانة بحزمة laravel-permission المقدمة من مجموعة spatie للتعامل مع الادوار والاذونات في تطبيقات لارافيل. تتعامل هاته الحزمة مع الصلاحيات وفق المنطق التالي: يمتلك المستخدم [دورا] ما. هذا الدور يمتلك مجموعة معينة من [الأذونات] التي يتم اسنادها له. يمكن اسناد دور ما لمستخدم ما. يمكن اسناد اذونة او صلاحية ما لدور ما. وتستخدم في مضمونها مفهوم البوابات والسياسات Gates & Policies. ويتم تعريف هاته الاذونات والادوار في ملفات مستقلة يمكن التعامل معها بشكل مستقل تماما. حيث يتم التحقق كل مرة يتم فيها استهداف حدث معين من التحقق مما اذا كان المستخدم الذي يقوم بالطلب يمتلك دورا من بين صلاحياته الوصول الى هذا المورد. مثال: يمتلك المستخدم "احمد" الدور "مدير مدرسة". هذا الدور يمتلك صلاحيات قراءة. محو، وتعديل الارشيف. عندما يحاول احمد الوصول للارشيف تحدث كامل العملية ويتم التحقق من ترخيصه. اعرف أكثر عن الترخيص (Authorization) في Laravel 1 اقتباس
0 Hafsa Aly نشر 11 أغسطس 2022 الكاتب أرسل تقرير نشر 11 أغسطس 2022 بتاريخ 53 دقائق مضت قال Adnane Kadri: بجانب ما اقترح المدرب عاطف، يمكنك الاستعانة بحزمة laravel-permission المقدمة من مجموعة spatie للتعامل مع الادوار والاذونات في تطبيقات لارافيل. تتعامل هاته الحزمة مع الصلاحيات وفق المنطق التالي: يمتلك المستخدم [دورا] ما. هذا الدور يمتلك مجموعة معينة من [الأذونات] التي يتم اسنادها له. يمكن اسناد دور ما لمستخدم ما. يمكن اسناد اذونة او صلاحية ما لدور ما. وتستخدم في مضمونها مفهوم البوابات والسياسات Gates & Policies. ويتم تعريف هاته الاذونات والادوار في ملفات مستقلة يمكن التعامل معها بشكل مستقل تماما. حيث يتم التحقق كل مرة يتم فيها استهداف حدث معين من التحقق مما اذا كان المستخدم الذي يقوم بالطلب يمتلك دورا من بين صلاحياته الوصول الى هذا المورد. مثال: يمتلك المستخدم "احمد" الدور "مدير مدرسة". هذا الدور يمتلك صلاحيات قراءة. محو، وتعديل الارشيف. عندما يحاول احمد الوصول للارشيف تحدث كامل العملية ويتم التحقق من ترخيصه. اعرف أكثر عن الترخيص (Authorization) في Laravel نعم شكرا لك ولكن انا اقصد ان اقوم بعمل حجب في قاعدة البيانات اي ان كل مدير مدرسة لايستطيع ان يري الا بيانات معلمين مدرسته فقط ولا يعرض امامه بيانات باقي معلمين المدارس الاخرى اقتباس
0 Adnane Kadri نشر 11 أغسطس 2022 أرسل تقرير نشر 11 أغسطس 2022 بتاريخ 2 دقائق مضت قال Hafsa Aly: نعم شكرا لك ولكن انا اقصد ان اقوم بعمل حجب في قاعدة البيانات اي ان كل مدير مدرسة لايستطيع ان يري الا بيانات معلمين مدرسته فقط ولا يعرض امامه بيانات باقي معلمين المدارس الاخرى يمكن انشاء دور مدير مدرسة. حيث ان هذا الدور يمتلك صلاحية رؤية معلمي مدرسته فقط. ما المانع في ذلك؟ وقد لا يكون هنالك حاجة اساسا من موضوع الصلاحيات، لما لا تقومين فقط بتنفيذ استعلام يقوم بجلب بيانات المعلمين الخاصين بمدرسة المدير؟ $doctor = Doctor::find($target_doctor_id); $doctor_school = $doctot->school_id; $teachers = Teacher::where('school_id' ,$doctor_school)->get(); او يمكنك تنظيم العملية اكثر عن طريق علاقات Eloquent. حيث: كل مدرسة تمتلك العديد من المعلمين. => علاقة one to many كل مدرسة تمتلك مديرا واحدا. => علاقة one to one يكون ناتج الاستعلام مشابها لـ: $teachers_of_a_school = Doctor::find($target_doctor_id) ->school() ->teachers(); مقدمة إلى رابط الكائنات بالعلاقات Eloquent - موسوعة حسوب 1 اقتباس
0 Hafsa Aly نشر 11 أغسطس 2022 الكاتب أرسل تقرير نشر 11 أغسطس 2022 بتاريخ 2 دقائق مضت قال Adnane Kadri: يمكن انشاء دور مدير مدرسة. حيث ان هذا الدور يمتلك صلاحية رؤية معلمي مدرسته فقط. ما المانع في ذلك؟ وقد لا يكون هنالك حاجة اساسا من موضوع الصلاحيات، لما لا تقومين فقط بتنفيذ استعلام يقوم بجلب بيانات المعلمين الخاصين بمدرسة المدير؟ $doctor = Doctor::find($target_doctor_id); $doctor_school = $doctot->school_id; $teachers = Teacher::where('school_id' ,$doctor_school)->get(); او يمكنك تنظيم العملية اكثر عن طريق علاقات Eloquent. حيث: كل مدرسة تمتلك العديد من المعلمين. => علاقة one to many كل مدرسة تمتلك مديرا واحدا. => علاقة one to one يكون ناتج الاستعلام مشابها لـ: $teachers_of_a_school = Doctor::find($target_doctor_id) ->school() ->teachers(); مقدمة إلى رابط الكائنات بالعلاقات Eloquent - موسوعة حسوب كنت اريد ان اربط ذلك باعطاء username,password لكل مدير مدرسه وعند فتح البرنامج يظهر له معلمين مدرسته فقط اقتباس
0 Adnane Kadri نشر 11 أغسطس 2022 أرسل تقرير نشر 11 أغسطس 2022 بتاريخ 2 ساعات قال Hafsa Aly: كنت اريد ان اربط ذلك باعطاء username,password لكل مدير مدرسه وعند فتح البرنامج يظهر له معلمين مدرسته فقط نعم، لن يكون ذلك مشكلة ايضا. يمكنك التعامل مع مسألة جلب بيانات معلمي مدرسة معينة بشكل مستقل تماما. بتاريخ 2 ساعات قال Adnane Kadri: لما لا تقومين فقط بتنفيذ استعلام يقوم بجلب بيانات المعلمين الخاصين بمدرسة المدير؟ $doctor = Doctor::find($target_doctor_id); $doctor_school = $doctot->school_id; $teachers = Teacher::where('school_id' ,$doctor_school)->get(); او يمكنك تنظيم العملية اكثر عن طريق علاقات Eloquent. 1 اقتباس
0 Hafsa Aly نشر 12 أغسطس 2022 الكاتب أرسل تقرير نشر 12 أغسطس 2022 ا بتاريخ On 8/11/2022 at 21:16 قال Adnane Kadri: نعم، لن يكون ذلك مشكلة ايضا. يمكنك التعامل مع مسألة جلب بيانات معلمي مدرسة معينة بشكل مستقل تماما. شكرا لك . ولكن ايضا اذا اردت الربط في هذا المشروع بين المدرسة والادارة اي اذا اردا مدير المدرة مخاطبة الادارة والعكس ايضا من خلال المشروع فما الفكرة لعمل ذلك اقتباس
السؤال
Hafsa Aly
لدي مشروع لادارة المعلمين يتم ادارته من خلال (المدرسة-الادارة)
اريد عمل صلاحيةلكل مدرسة ان ترى المعلمين الخاصين بها فقط من الdb وايضا كل ادارة ترى المعلمين الموجودين فقط بادارتها ولاترى باقي المعلمين من الdb
كيف افعل ذلك
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.