Amir Alsaeed نشر 23 مارس 2021 أرسل تقرير نشر 23 مارس 2021 لدي مشروع لارافيل وواجهة المستخدم مبنية من خلال Vue JS. يتم التحقق من المستخدمين عن طريق passport في لارافيل من جهة الخادم. ولدي أنماط مختلفة من المستخدمين وكل نمط له صلاحيات مختلفة Passport::tokensCan([ 'user' => 'User', 'customer' => 'Customer', 'admin' => 'Admin', ]); كيف يمكنني تطبيق ذلك من خلال passport scope وإضافة صلاحيات مختلفة لكل نوع من المستخدمين؟ وهل roles مختلفة هنا عن scopes؟ اقتباس
0 Sam Ahw نشر 23 مارس 2021 أرسل تقرير نشر 23 مارس 2021 يمكن إضافة الصلاحيات لكل مستخدم ضمن التابع boot في AuthServiceProvider بالشكل التالي: Passport::tokensCan([ 'manage-order' => 'Manage order scope' 'read-only-order' => 'Read only order scope' ]); وضمن مسارات التوجيه نقوم بإضافة guard ضمن الوسيط يتضمن السكوب على حسب الصلاحيات التي يمكن استخدامها من قبل المستخدم: ->middleware(['auth:api', 'scopes:your-scope=key-here']); فتصبح مسارات التوجيه بالشكل التالي: Route::get('/api/orders', 'OrderController@index') ->middleware(['auth:api', 'scopes:manage-order']); Route::post('/api/orders', 'OrderController@store') ->middleware(['auth:api', 'scopes:manage-order']); Route::get('/api/orders/{id}', 'OrderController@show') ->middleware(['auth:api', 'scopes:manage-order, read-only-order']); وللتحقق من صلاحيات المستخدم، يمكننا ضمن المتحكّم الخاص بعملية تسجيل الدخول إضافة التالي: $role = $user->checkRole(); if ($role == 'admin') { $request->request->add([ 'scope' => 'manage-order' // نقوم هنا بإضافة السكوب الخاص بنوع المستخدم ]); } else { $request->request->add([ 'scope' => '.....' ]); } // تحويل الطلب وإضافة token $tokenRequest = Request::create( '/oauth/token', 'post' ); return Route::dispatch($tokenRequest); حيث سيتم التعرّف على صلاحيات المستخدم بعد إنشاء token الخاص به وتمريره مع الطلبات الواردة إلى خادم الويب باستخدام الترويسة Bearer بشكل مشابه للتالي: $response = $client->request('GET', '/api/endpoint', [ 'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'Bearer '.$accessToken, ], ]); 1 اقتباس
السؤال
Amir Alsaeed
لدي مشروع لارافيل وواجهة المستخدم مبنية من خلال Vue JS. يتم التحقق من المستخدمين عن طريق passport في لارافيل من جهة الخادم. ولدي أنماط مختلفة من المستخدمين وكل نمط له صلاحيات مختلفة
Passport::tokensCan([ 'user' => 'User', 'customer' => 'Customer', 'admin' => 'Admin', ]);
كيف يمكنني تطبيق ذلك من خلال passport scope وإضافة صلاحيات مختلفة لكل نوع من المستخدمين؟ وهل roles مختلفة هنا عن scopes؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.