【问题标题】:Allow admin users to see what other user type can see/do?允许管理员用户查看其他用户类型可以查看/执行的操作?
【发布时间】:2016-03-21 10:21:54
【问题描述】:

我有一个 Laravel Web 应用程序,包含两种类型的用户:

  1. 客户
  2. 管理员

根据他们的用户类型,他们可以查看和执行不同的操作。


客户

当以客户身份登录时,我的客户会看到不同的仪表板。


管理员

以管理员身份登录时,我可以在表格中看到用户列表

例子,

  1. 用户A
  2. 用户B
  3. 用户C
  4. 更多……

目标: 我想看看当点击列表中的一个用户时客户看到了什么。

我想不出解决办法。


国际海事组织

Auth::user()->type 是否适用于这种情况?

目标是将页面呈现为Auth:user()->type == ‘customer’,而实际的Auth::user()->type == ‘admin’。我不完全确定我想要做的事情是否可行。


我将如何在 Laravel 中做类似的事情?

【问题讨论】:

  • 这很有趣..我也有兴趣..
  • 你问的是所谓的“伪装”。我不知道有任何 Laravel 包实现了这一点。
  • @MateiMihai:谢谢!
  • @Kryten :感谢您为我指出正确的术语,这将帮助我缩小研究范围。
  • 没有问题。我知道当你不知道它叫什么时搜索它是多么令人沮丧:)

标签: php laravel laravel-5 laravel-5.1 laravel-blade


【解决方案1】:

你可以试试我在我的一个项目中所做的 - 实现非常简单,也许你也可以利用它。

我们的 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,无论如何功能的核心都在上面的代码中。

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2022-07-05
    相关资源
    最近更新 更多