2017-10-31 2 views
0

이것은 내 첫 Laravel/Lumen 프로젝트이므로 내 지식이 아직 최고가 아닙니다.Laravel/Lumen : 컨트롤러 액세스 권한을 부여하는 방법?

내 노선 :

$router->group(['prefix' => 'rest/v1','middleware' => 'auth'], function($router) { 
    $router->get('articles','[email protected]'); 

    $router->get('article/{id}','[email protected]'); 
}); 

내 컨트롤러 :

class ArticleController extends Controller{ 
    public function index(){ 
     if(!CapabilityService::currentUserCan('fetch_basic_content')) { 
      return response('Insufficient permissions.', 401); 
     } 
     return response()->json(Article::all()); 
    } 

    public function getArticle($id){ 
     if(!CapabilityService::currentUserCan('fetch_basic_content')) { 
      return response('Insufficient permissions.', 401); 
     } 
     return response()->json(Article::find($id)); 
    } 
} 

이 내 컨트롤러 내에서 모든 기능을을 찾아가는에 대해 동일한 권한입니다 특히, 물론 매우 복잡합니다. 그러나 사용 권한을 확인하려면 사용자 정의 CapabilityService을 사용해야합니다. 이 기능을 어떻게 구현할 수 있습니까?

+0

같은 일을 할 무엇 (https://laravel.com/docs/5.5/authorization#creating-policies) – Maraboc

+0

할 일을 A [정책]을 만드는 방법에 대한 정책은 컨트롤러에서도 작동합니까? – Blackbam

+1

예'$ this-> authorize ('update', $ post);' – Maraboc

답변

1

새 미들웨어를 만들면됩니다. 미들웨어 handle 방법 이제

$router->group(['prefix' => 'rest/v1','middleware' => ['auth','your-custom-middleware']], function($router) { 
    $router->get('articles','[email protected]'); 

    $router->get('article/{id}','[email protected]'); 
}); 

if(!CapabilityService::currentUserCan('fetch_basic_content')) { 
      return response('Insufficient permissions.', 401); 
     } 
return $next($request); 
+0

과 같은 컨트롤러 도우미를 사용할 수 있습니다. 정책이나 게이트가 없어도 해결할 수있는 재미있는 방법 중 하나입니다. – Blackbam

관련 문제