2017-08-16 157 views
0

我目前正在开发一个laravel的应用程序,其中有3 user_rolesLaravel登录其他用户身份

  1. 超级管理员
  2. 联系
  3. 正常

因此,每个角色可以访问他下面的角色。

e.g

Superadmins可以访问管理员和普通用户帐户。

如何通过单击按钮允许经过身份验证的superadmin用户以管理员或普通用户身份登录?

USER_ROLES TABLE 
id  name 
1  superadmin 
2  admin 
3  normal 

---------------------------- 
USERS TABLE 
id  first_name  last_name  user_role_id password 
1  john    doe    1    ******* 
2  jane    doe    2    ******* 
3  cassie   snow    3    ******* 
4  sansa    stark   3    ******* 
+0

您可以为管理员设置会话变量,并在点击按钮时重定向到管理控制台。 –

+0

Superadmin默认应具有所有管理员和用户权限,不是?你能多解释一下吗?还有很多基于角色登录的软件包。 –

+0

@ S.I。是的。 superadmin访问普通用户帐户更加明显。 superadmin的仪表板只包含管理整个系统的内容。而用户有不同的功能。我想要做的是一个superadmin访问普通用户的帐户并代表他执行任务。这就像模仿普通用户。但是所有的活动都将被记录为实际用户(superadmin)。 –

回答

0

阅读中,我觉得你想要做以下评论:

  • 编辑anothers轮廓(或其他任何东西)
  • 您的权利必须比其他帐户
  • 的那些高
  • 一切都应该由用户记录,而不是由所有者改变条目

该foll由于解决方案是建立在一个,也许有一些包为laravel来解决这种问题。

Auth::loginById($otherUserId)可能是一个解决办法:

  • 你必须检查是否允许用户登录在此配置文件
  • 你要记住自己的用户ID(在一个会话),将其添加日志
  • 你只能访问的页面,用户可以看到(而不是管理页面)

另一种方法是使用Policies

例如您是用户1,并且想要在更新功能user/3/profile中编辑用户3的配置文件。你可以调用一个策略函数来检查你的user_role_id是否比其他的小。然后记录将被保存,并且记录器将使用您的用户标识将其记录下来。

两种方式都有优点和缺点。 使用ID登录会给你确切的其他用户的看法。但是你必须修改你的记录器(而不是Auth :: id()使用某个会话)。然后,您可以实现一个小按钮(跳回自己的个人资料),然后重新登录自己的帐户。 使用策略对于记录器来说会更容易,但是在每个部分您都必须执行策略检查。

不知道您的项目的规模和复杂性我会建议第一个解决方案。我自己在一个项目中实现了它,但没有记录器功能。

相关问题