2015-07-12 39 views
0

我目前正在使用用戶創建模型的項目上工作,只有他/她被允許查看,編輯或刪除。允許CRUD僅用於Auth ::擁有資源的用戶

創建部分通過Eloquent Relationships完成,但對於其他操作,我想將它與Route Model綁定結合起來,而不是手動在控制器中。我試着用中間件解決它,但我無法訪問資源。

有人可以指點我正確的方向,任何最佳實踐,歡迎!

回答

2

我個人使用路由模型綁定,但只允許模型綁定,如果用戶擁有該記錄。

這意味着無論如何 - 人們無法訪問別人的記錄。因此,例如,在我的路線,我可以做

$router->get('property/{property}, ['uses' => [email protected]]); 
我RouteServiceProvider

然後:

$router->bind('property', function($value) { 

     $property = \App\Property::findOrFail($value); 

     if ((int)$property->user_id !== (int)auth()->id()) { 
      abort (404); 
     } 

     return $property; 
    }); 
在上面的例子

所以 - 我們有一個property路線,它會試圖找到的財產​​記錄給出。然後它會檢查用戶是否擁有該記錄,否則會拋出一個404(但您可以重定向或執行某些操作 - 取決於您)。

+0

我正在尋找這樣的答案,中間件和/或請求會讓它太複雜。謝謝! –

+0

不會使用'middleware'或'requests'使它更容易? – surfer190

相關問題