2015-04-30 81 views
4

我正在使用Laravel 5來開發一個應用程序,我想分配角色和權限給使用Zizaco/Entrust的用戶。爲了更好的理解,讓我舉個例子:分配權限給用戶,而不是角色使用委託在Laravel 5

我在我的db中有4個角色:guest,user,admin,owner。所有者對管理面板和主站點有完全訪問權限,管理員對管理面板的訪問權限有限,並且在主站點上已滿,用戶應在主站點上定製訪問權限,並且訪客根本無法訪問(卡住在主頁上,直到他們被賦予用戶角色)。

我面臨的問題是對用戶的自定義訪問。有4個主頁面,用戶應該向其中的一個或多個請求權限。在主頁面上,他們可以上傳文件,也可以做其他一些事情。

我想要做的就是給他們所有用戶的角色,但是例如,用戶A有權僅查看頁面1,無法上傳文件或任何其他內容,用戶B有權查看第3頁和第4頁,僅將文件上傳至第3頁,並將其他內容添加至除上載文件之外的內容。 我想你有這張照片。

這可以只使用Entrust來完成,還是應該在Users和Permissions之間創建一個新的數據透視表,並使用它來完成我所需要的操作?

非常感謝你提前,

德拉戈什

編輯: 我以前想過是給他們多角色,如「瀏覽器對頁面一」,「uploader- to-page-one「,」viewer-to-page-2「等等,但那麼權限表在我的db中完全沒用。

最後,我想要完成的任務是當具有隻讀權限的用戶第1和第2的對數,我想在會議的下列數據:

['id'->1,'name'->'user's name','email'->'users's email','role'->'user','permissions'->['view-page-1','view-page-2']] 

所以他只能查看第1頁和第2頁,但不能上傳文件或其他任何東西。

當與視圖的用戶和上傳文件的權限第1個日誌中,我想:

['id'->2,'name'->'user's name','email'->'users's email','role'->'user','permissions'->['view-page-1','upload-to-page-1']] 

所以他只能查看第1頁和上傳文件到第1頁。

回答

1

它可能在回答這個問題時有點遲,但這僅適用於所有到達此頁面的人。

說實話,你完全正確的權限表是無用的。如果有人正在從頭開始建設一個網站,他會根據自己的需要量身定製系統。我真的很喜歡委託,委託沒有這種功能的原因是因爲直接向用戶分配權限是一種糟糕的設計架構。權限表存在的唯一原因僅僅是因爲小型應用程序。您擁有單一資源並且所有角色實際上都使用相同資源的情況。在這些情況下,而不是檢查每個用戶,你可以簡單地檢查權限。但是在實際的中/大型應用程序中,每個角色都有單獨的控制器。