2014-10-04 47 views
0

我仍在學習Laravel &最佳做法。限制Laravel中的「用戶」,同時仍允許所有人編輯他們自己的'用戶'

我有一個用戶系統,以便您可以通過UserController創建&更新用戶。只有管​​理員應該能夠訪問用戶&操縱它們。所以我創建了以下路線:

Route::resource('user', 'UserController')->before('role:admin'); 

所有看起來不錯,工作正常。我有一個過濾器,用於檢查登錄用戶是否是管理員,然後才能訪問與用戶有關的任何內容。

這裏是我變得困惑。登錄並且不是管理員的用戶仍應能夠編輯他們自己的信息(電子郵件,密碼,用戶名)。我已經使用相同的窗體部分設置了一個新窗體部分我已經設置了編輯用戶,因爲所有的窗體都是相同的,我想我可以使用相同的窗體方法處理窗體,以避免重複處理,這是相同的:

{{Form::model($user, ['method'=>'PATCH', 'route'=>['user.update', $user->id]])}} 

除此之外,因爲我的用戶是不是管理員,他們要推回403消息,而不是它處理腳本。

如何讓用戶編輯自己的信息而不丟失UsersController上的管理限制?

回答

-1

簡單的解決方法是創建一個具有不同訪問限制的AccountController。在UsersControllerAccountController之間完成的任何常見處理都可以移動到模型中。

+0

好的,所以如果我這樣做,並將編輯過程移到accountcontroller,這是否意味着如果用戶編輯表單來嘗試編輯不同的用戶標識,他們可以成功? – TH1981 2014-10-04 14:41:55

+0

那麼在帳戶控制器中,您只需更新與登錄用戶相匹配的用戶。 – Rob 2014-10-04 17:55:35

+0

我很驚訝這被選作答案。 @ TH1981看起來像對我不好的建議,而不是幹。 – surfer190 2015-11-11 10:20:06

相關問題