2015-05-20 4 views
1

Доставленное auth промежуточное ПО, которое поставляется с Laravel 5, отлично подходит для маршрутов и контроллеров только для пользователей, однако я хочу добавить возможность также проверить, является ли пользователь администратором.Настройка промежуточного ПО auth - Laravel 5

В настоящее время в моих контроллерах, у меня есть это для каждого класса:

if (Auth::user()->level <= 1) { 
    // admin can do these actions 
} else { 
    // redirect 
} 

Это очень избыточное, и я хотел бы посмотреть на то, что мои варианты. Поскольку я хочу сохранить исходное программное обеспечение auth для аутентификации пользователей, должен ли я создавать новый для проверки подлинности администратора, или я могу внести некоторые простые изменения в исходное связующее ПО auth, которое может учитывать мой код выше?

ответ

5

Средство промежуточного уровня в Laravel 5.0 не поддерживает аргументы (это будет добавлено в предстоящем выпуске 5.1).

Ваши варианты предназначены либо для создания отдельного промежуточного слоя для этого, либо для использования фильтров маршрута.


Вы можете создать маршрут фильтр, поставив это в ваших RouteServiceProvider «ы boot метод:

$router->filter('userLevel', function($route, $request, $level) 
{ 
    $user = auth()->user(); 

    if (! $user || $user->level > $level) 
    { 
     return response('Unauthorized', 401); 
    } 
}); 

Затем использовать этот фильтр в маршрутах:

Route::group(['before' => 'userLevel:1'], function($router) 
{ 
    // define routes... 
}); 
+1

Это хорошо, чтобы знать это будет добавлено в 5.1 - тем временем, какой фильтр маршрутов я могу создать? Ах, я только что видел ваше обновление, спасибо. –

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