Мы разрабатываем приложение laravel, приложение имеет административную часть, которая доступна только пользователям с правами администратора. routes
файл у нас есть:
Route::group(['middleware' => 'admin', 'prefix' => 'admin', 'namespace'
=> 'Admin'] , function() {
Route::get('oldAdminUrl', 'oldControllwe@handle');
}
middleware
Функция дескриптора файла похожа на
public function handle($request, Closure $next)
{
if ($this->admin->guest())
{
//some code here
}
return $next($request);
}
объявление $this->Admin
относится к Model
называется adminModel
со следующим атрибутом
protected $table = 'admin'
Теперь нам нужно добавить новый URL-адрес в группу административных URL-адресов, назовем его
newAdminUrl
он должен быть доступным как для пользователей-администраторов, так и для новой группы пользователей. editors
Это хорошая практика, чтобы поместить этот URL за пределами admin group
и назначить ему новый middleware
давай называть это editorsMiddleware
в дополнение к admin middleware
проверить, если пользователь, который хочет получить доступ к newAdminUrl
находится либо в группе редакторов, либо в группе администраторов, а редакторы хранятся в другой таблице
Route::group(['middleware' => ['admin','editors], 'prefix' => 'admin',
'namespace' => 'Admin'] , function() {
Route::get('newAdminUrl', 'newControllwe@handle');
}
EditorModel
который используется внутри editorMiddleware
имеет этот атрибут:
protected $table = 'editor'
Вопрос:
Какой правильный или даже хороший подход для его реализации? или у кого-нибудь есть идея или предложение получше?
На самом деле, предложенный вами подход хорош. Создайте промежуточное программное обеспечение «редактор», позволяющее проходить пользователям с ролями «администратор» и «редактор». Я реализовал разрешения таким образом в ряде приложений Laravel. Возможно, вы захотите перенести вызов промежуточного программного обеспечения в метод __contruct () соответствующего контроллера, просто чтобы упростить файл маршрутов и сохранить строку кода для каждого маршрута, но это ни здесь, ни там.
Других решений пока нет …