2017-01-01 79 views
0

我有一個休息API,其中很多路由將以/ org/{id}爲前綴。此前綴將限制嵌套數據的範圍,並且如果用戶是組織成員,則需要檢查該用戶。中間件是否是運行這些檢查的最佳位置,並初始化可在整個請求的其餘部分訪問的orgcontext類?Laravel rest API中間件

+0

是用戶通常不止一個組織的成員? – ceejayoz

+0

@ceejayoz是的。在前端有功能來改變你正在工作的組織。它是一個角度spa,我使用會話存儲來存儲當前的組織標識,以便用戶可以在不同的標籤中使用不同的組織。 –

回答

1

中間件可能是做這些檢查的理想場所:

<?php 

namespace App\Http\Middleware; 

use Closure; 
use App\Repositories\Eloquent\UserRepository; 

class CanAccessOrg 
{ 
    public function handle($request, Closure $next, UserRepository $userRepository) 
    { 
     if (! $userRepository->currentUserCanAccessOrg(Session::get('org'))) { 
      Auth::logout(); 

      return redirect()->route('login')->withErrors(['msg', 'You dont have access to this org']);; 
     } 

     return $next($request); 
    } 
}