У меня есть веб-приложение Laravel, состоящее из 2 типов пользователей:
Основываясь на своем типе пользователя, они могут видеть и выполнять разные вещи.
Покупатель
Когда вы войдете в систему как клиент, мой клиент увидит другую панель управления.
Администратор
При входе в систему как администратор, я вижу список пользователей в таблице
Пример,
Цель:
Я хочу видеть, что клиент видит, когда нажимает на одного из пользователей в списке.
Я не мог найти решение для этого.
IMO
Будет Auth::user()->type
работать по этому сценарию?
Цель состоит в том, чтобы сделать страницу как Auth:user()->type == ‘customer’
когда фактическая Auth::user()->type == ‘admin’
, Я не совсем уверен, возможно ли то, что я пытаюсь сделать.
Как бы я сделал что-то подобное в Laravel?
Вы можете попробовать то, что я сделал в одном из моих проектов — реализация довольно проста, может быть, вы также можете использовать это.
Есть дополнительные действия в нашем AuthController это позволяет пользователю переключаться на других пользователей и запоминает текущий идентификатор пользователя в сеансе:
public function switchUser($userId)
{
// disallow switched users from switching again
if (Session::get('previous_user')) App::abort(403);
$user = User::findOrFail($userId);
Session::set('previous_user', Auth::id());
Auth::login($user);
return redirect('some path');
}
Вторая часть — это настраиваемая функция выхода из системы, которая для переключенных пользователей переключает их обратно на исходную учетную запись пользователя вместо выхода из системы:
public function getLogout()
{
if ($previousUser = Session::get('previous_user')) {
Session::remove('previous_user');
Auth::loginUsingId($previousUser);
return redirect('some path');
}
Auth::logout();
return redirect('some path');
}
С этой логикой вы сможете переключаться на других пользователей и обратно. Возможно, вам потребуется добавить проверку разрешений, чтобы это могли делать только администраторы и т. Д., Связать клиентов в списке с URL-адресом коммутатора, в любом случае ядро функциональности присутствует в приведенном выше коде.
Других решений пока нет …