Всем привет. Работаю с Laravel. Использую
laravel-permission. (для информации)
Посоветуйте, как лучше ограничивать доступ?
Сейчас ограничиваю доступ в роутах через middleware. НО! Чаще приходится сущность делить на группу роутов, например, для простого CRUD.
Route::group(['middleware' => ['auth', 'role:author']], function () {
...
Route::post('/posts/store', ['uses' => 'PostController@store', 'as' => 'posts.store']);
Route::post('/posts/{post}/update', ['uses' => 'PostController@update', 'as' => 'posts.update']);
// другие роуты только для author
...
}
Route::group(['middleware' => ['auth', 'role:editor']], function () {
...
Route::post('/posts/{post}/update', ['uses' => 'PostController@update', 'as' => 'posts.update']);
// другие роуты только для editor
...
}
// Можно ведь и в контроллере(DI)
public function __construct()
{
$this->middleware('auth');
$this->middleware('author');
$this->middleware('editor')->only('update');
}
// а в роуте писать
Route::resource('posts', 'PostController');
Да, я знаю, что можно для каждого отдельного
Route::get('profile', 'UserController@show')->middleware('auth');
По мне, в контроллерах гибче получается. Так вот, напишите ваши советы, как лучше, общие практики)
Спасибо!