У меня Laravel 5.3 с тремя разными типами пользователей. Я хочу, чтобы они перенаправлялись на другие страницы панели управления после входа в систему. Например:
пользователь - ›логин -› панель пользователя
админ - ›логин -› админ-панель
Я создал промежуточное ПО под названием CheckRole
:
public function handle($request, Closure $next)
{
if($request->user() === null) {
return response("Insufficient Permissions" , 401);
}
$actions = $request->route()->getAction();
$roles = isset($actions['roles']) ? $actions['roles'] : null;
if($request->user()->hasAnyRole($roles) || !$roles) {
return $next($request);
}
return response("Insufficient Permissions" , 401);
}
Маршруты
Route::group(['middleware' => ['auth','roles'], 'roles' => 'Admin'], function () {
// Routes here
}
Роли работают отлично.
Теперь redirectTo= '';
в LoginContoller
указывает только на одну точку зрения. Я проверил документацию и считаю, что это как-то связано с охраной, у которой нет объяснений, как ее настроить.
Я также видел мультиаут, но я не думаю, что разумно создавать разные таблицы для разных пользователей и, следовательно, искать альтернативный ответ.
Любое предложение будет оценено по достоинству.
Мои таблицы похожи на:
Table users
id | name | email
---------
1 | John | [email protected]
2 | Michael | [email protected]
Table roles
id | name
---------
1 | Admin
2 | PrivilegedMember
3 | Subscriber
Table user_role
id | user_id | role_id
----------------------
1 | 1 | 1
2 | 2 | 2
Это может быть дубликат вопроса ниже, но предоставленный ответ остается без объяснения множественных перенаправлений.