允许管理员用户查看其他用户类型可以查看/执行的操作?

时间:2015-12-15 14:58:25

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

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

  1. 客户
  2. 管理员
  3. 根据用户类型,他们可以查看并执行不同的操作。

    客户

    以客户身份登录时,我的客户会看到不同的信息中心。

    管理

    以admin身份登录时,我可以看到表格中的用户列表

    示例,

    1. 用户A
    2. 用户B
    3. 用户C
    4. 更多......
    5. 目标: 我希望看到客户在点击列表中的某个用户时看到的内容。

      我无法为此提出解决方案。

      IMO

      Auth::user()->type是否适用于此方案?

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

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

1 个答案:

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