我有一个Laravel Web应用程序,包含两种类型的用户:
根据用户类型,他们可以查看并执行不同的操作。
客户
以客户身份登录时,我的客户会看到不同的信息中心。
管理
以admin身份登录时,我可以看到表格中的用户列表
示例,
目标: 我希望看到客户在点击列表中的某个用户时看到的内容。
我无法为此提出解决方案。
IMO
Auth::user()->type
是否适用于此方案?
目标是在实际Auth:user()->type == ‘customer’
时将网页呈现为Auth::user()->type == ‘admin’
。我不完全确定我想做的事情是否可行。
我如何在Laravel做类似的事情?
答案 0 :(得分:6)
你可以尝试我在我的一个项目中所做的 - 实现非常简单,也许你也可以使用它。
我们的 AuthController 还有其他操作,允许用户切换到其他用户并记住会话中的当前用户ID:
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,无论如何,功能的核心都在上面的代码中。