2017-03-28 1 views
0

저는 중소 기업을위한 관리 플랫폼을 구축했으며 실제로 Laravel 5.4와 함께 v2에서 작업하고 있습니다.엔티티 상태에 따라 Laravel 액세스 권한에 대한 조언

  • 홈페이지 관리 엔티티가 위임과 같습니다

    컨텍스트는 다음과 같습니다. 책임, 주요 브로커, 서브 브로커 :

  • 이 관리 할 수있는 몇 가지 항목 (CRUD)
  • 사용자는이 위임에 초대하고 다른 역할을 가질 수있다.
  • "글로벌"권한을 가진 일부 사용자는 총무 또는 CEO처럼 모든 권한에 액세스 할 수 있습니다.
  • 그리고 까다로운 부분 인 액세스 권한은 위임 상태에 따라 변경됩니다.

전역 액세스 권한과 관련하여 모든 활동/역할 기반 액세스가 포함되어 있습니다.

위임 액세스 권한은 다음 저장 전용 테이블에 저장됩니다

mandate_status_id 
role_identifier 
action_identifier 
is_authorized 

내가 바로 주요 개체에 액세스를 처리하고있어 방법은 나를 귀찮게하고 나는 그것을 리팩토링하고 싶습니다. 나를 괴롭히는 것은 모든 액세스 확인시 위임장에 대한 "사용자 동의"와 관련하여 현재 사용자 역할을 결정해야한다는 것입니다. 위임 권한 테이블은 모든 요청에 ​​대해 싱글 톤으로로드됩니다.

권한/역할에 대한 캐싱 접근 방식을 처음 시도했지만 위임 상태 이후 권한이 변경되지 않았을 때 제한이있었습니다.

저는 위임 모델을 인스턴스화 할 때 위임 액세스 또는 위임 컨텍스트를 구축하는 것과 같은 것을 생각하고있었습니다. 그것은 액세스 권한과 권한을 가진 사용자를 준비합니다. 당신은 내가

+0

어쩌면 정책을 사용하는 것이 도움이되기를 바랍니다, 정책 미들웨어로 추가 할 수있는 방법이므로 역할에 따라 어쩌면 그룹 루트 수 있습니다. – Christophvh

+0

네, 지금 당장하고 있습니다. @can을하거나 권한을 확인할 때마다, 사용자에게 위임장과 대조하여 역할을 확인한 다음 액세스 권한이 있는지 확인해야합니다. 미들웨어는 내가 생각하고있는 문맥을 instanciate 할 장소가 될 수 있습니다. – Hyti

+0

https://laravel.com/docs/5.4/authorization – Indra

답변

0

말하지 마십시오 그것을 잘못된 방향으로 접근하고 있다고 생각하면

은 내가 권한으로 작업 할 때 나는 AuthServiceProvider

public function boot(GateContract $gate) 
    { 
     $this->registerPolicies(); 

     $gate->before(function ($user, $ability) { 
      if (! $user->isActive()) { 
       return false; 
      } 

      if ($user->isAdmin()) { 
       return true; 
      } 

      if ($user->isSuperAdmin()) { 
       return true; 
      } 

      if (in_array($ability, $user->getAbilities())) { 
       return true; 
      } 

      return false; 
     }); 
에서 부팅 방법이 추가 제안에 열려있어

그리고 사용자 모델에는 DB에서 사용 권한을 가져 오는 getAbilities가 있습니다. 그리고 그 모습은 다음과 같습니다 :

public function getAbilities() 
{ 
    return $this->role->permissions->pluck('description')->toArray(); 
} 

이제 데이터 모델에서 사용 권한 모델을 만들고 사용 권한을 설정해야합니다.

그것이

+0

이 접근법을 사용할 수 있습니다. – Hyti

관련 문제