2015-10-28 2 views
4

Мы разрабатываем приложение Laravel, приложение имеет админ часть, которая доступна только для пользователей, администраторов в routes файле мы имеем:давали разрешение на новую роль в Laravel 5

Route::group(['middleware' => 'admin', 'prefix' => 'admin', 'namespace' 
       => 'Admin'] , function() { 
     Route::get('oldAdminUrl', '[email protected]'); 

    } 

ручки The 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 в группе администраторов URLs давайте назовем это newAdminUrl должно быть accessabile как для пользователей, администраторов, а также новая группа пользователей, давайте называть их editors

является его хорошая практика поместить этот URL-адрес за пределы admin group и назначить ему новый middleware, назовем его editorsMiddleware в дополнение к admin middleware, чтобы проверить, находится ли пользователь, который хочет получить доступ к newAdminUrl, либо в группе редактирования, либо в группе администратора, а редакторы сохраняются в другом таблица

Route::group(['middleware' => ['admin','editors], 'prefix' => 'admin',  
    'namespace' => 'Admin'] , function() { 
     Route::get('newAdminUrl', '[email protected]'); 

    } 

EditorModel, который используется внутри editorMiddleware этот атрибут:

 protected $table = 'editor' 

Вопрос: что является правильным или даже хороший подход к реализации? или у кого-нибудь есть лучшая идея или предложение?

+0

Посмотрите на свой синтаксис: '['admin', 'editors]' Отсутствие закрытия '' 'после' 'редакторов'. –

+0

Используете ли вы 5.0 или 5.1? – user3158900

+1

Вы используете другую таблицу, другую модель, затем я создам другое промежуточное программное обеспечение для редакторов. Но вы можете группировать группы, поэтому внешняя группа использует промежуточное ПО 'editor'. Внутренняя группа с использованием 'admin'. В случае, если администратор передает «редактор» промежуточное ПО ... – Iamzozo

ответ

2

Действительно, подход, который вы предложили, в порядке. Создайте промежуточное программное обеспечение «редактора», которое позволяет пользователям с роли «admin» и «editor» пройти. Я реализовал разрешения таким образом в ряде приложений Laravel. Возможно, вам стоит подумать о переносе вызова промежуточного программного обеспечения на метод __contruct() соответствующего контроллера, чтобы упростить ваш файл маршрутов и сохранить строку кода для каждого маршрута, но это ни здесь, ни там.

Смежные вопросы