2017-08-16 155 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()使用某個會話)。然後,您可以實現一個小按鈕(跳回自己的個人資料),然後重新登錄自己的帳戶。 使用策略對於記錄器來說會更容易,但是在每個部分您都必須執行策略檢查。

不知道您的項目的規模和複雜性我會建議第一個解決方案。我自己在一個項目中實現了它,但沒有記錄器功能。

相關問題