Laravel 5.2'deki Cartalyst Sentinel'i kullanarak roller rollerinden yararlanmak için bir Laravel acemi (ÇOK acemi) kullanıcısıyım.Laravel ve Sentinel: Yetkilendirme için orta katmanları karıştırın
Yönetici bölümünde üç (veya daha fazla) rolüm var, yani "admin", "agent" ve "writer".
Ben de böyle yani karışık roller erişimi olmalıdır bazı bölümleri: (erişebileceği: admin)
- panosunu
- siparişleri (erişebileceği: admin, ajan)
- sayfa (erişebileceği: admin, yazar)
- no_admin_here (erişebileceği: ajan, yazar)
Şu anda sadece iki rolle çalışmayı başardım ama şimdi sıkıştım. (Kernel.php içinde 'kontrol' olarak adlandırılır)
routes.php
// only authenticated users can access these pages
Route::group(['prefix' => 'admin', 'as' => 'admin.', 'middleware' => ['check']], function(){
// these pages are accessible to all roles
Route::get('dashboard', ['as' => 'dashboard', function(){
return view('admin/dashboard');
}]);
// only admin can access this section
Route::group(['middleware' => 'admin'], function(){
Route::get('users', function(){
return view('admin/users');
});
});
});
SentinelCheck Ara Katman
if (!Sentinel::check()) { // user is not authenticated
return redirect()->route('admin.login')->with('error', 'You must be logged to view the page');
}
if (Sentinel::inRole('customer')) { // user is authenticated but he is a customer
return redirect()->route('admin.login')->with('error', 'You are a customer and cannot access to backend section');
}
: şimdiye kadar ne yaptık (sadece gerekli kodu koymak)
SentinelAdmin Ara Katman (Kernel.php adlı 'yönetici')
if (!Sentinel::inRole('admin')) { // user is authenticated but he is not an admin
return redirect()->route('admin.login')->with('error', 'You are not admin and cannot view requested section');
}
SentinelAgent Ara Katman (Kernel.php adlı 'ajan')
if (!Sentinel::inRole('agent')) { // user is authenticated but he is not an agent
return redirect()->route('admin.login')->with('error', 'You are not agent and cannot view requested section');
}
Şimdiye kadar iyi, dedim, ama işler pisliği ben rolleri karıştırmak çalıştığınızda; yani böyle bir rota yazamıyor:
// only admin and agent can access this section
Route::group(['middleware' => ['admin', 'agent']], function(){
Route::get('orders', function(){
return view('admin/orders');
});
});
"ajan" engellemek ve onu çıkış olacak "admin" katman beri bölümüne ulaşmak asla çünkü.
['middleware' => ['admin', 'writer']]
['middleware' => ['agent', 'writer']]
['middleware' => ['admin', 'writer', 'whatever_else_role']]
vb ..
Yani, kolayca rolleri karıştırmak hangi bir (kolay) yolu yoktur bölümlere erişir: Ve aynı şekilde, ben her roller karışımını yapamaz? Yardım için şimdiden teşekkür ederiz.