Разрешить пользователям с правами администратора видеть, что другой тип пользователей может видеть / делать?

У меня есть веб-приложение Laravel, состоящее из 2 типов пользователей:

  1. покупатель
  2. админ

Основываясь на своем типе пользователя, они могут видеть и выполнять разные вещи.


Покупатель

Когда вы войдете в систему как клиент, мой клиент увидит другую панель управления.


Администратор

При входе в систему как администратор, я вижу список пользователей в таблице

Пример,

  1. ПользовательА
  2. USERB
  3. userC
  4. Больше …

Цель:
Я хочу видеть, что клиент видит, когда нажимает на одного из пользователей в списке.

Я не мог найти решение для этого.


IMO

Будет Auth::user()->type работать по этому сценарию?

Цель состоит в том, чтобы сделать страницу как Auth:user()->type == ‘customer’когда фактическая Auth::user()->type == ‘admin’, Я не совсем уверен, возможно ли то, что я пытаюсь сделать.


Как бы я сделал что-то подобное в Laravel?

2

Решение

Вы можете попробовать то, что я сделал в одном из моих проектов — реализация довольно проста, может быть, вы также можете использовать это.

Есть дополнительные действия в нашем 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-адресом коммутатора, в любом случае ядро ​​функциональности присутствует в приведенном выше коде.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]