2014-10-09 2 views
1

현재 symfony (FOSUserBundle 포함)를 사용하는 시스템에서 작업하고 있으며 상속을 활용하고자하는 role_hierarchy 내에 여러 역할을 가지고 있습니다.Symfony 사용자 역할 상속

나는의 role_hierarchy 있습니다

role_hierarchy: 
    ROLE_MEMBER:  ROLE_USER 
    ROLE_MONITOR: ROLE_MEMBER 
    ROLE_SUPERVISOR: ROLE_MONITOR 
    ROLE_MANAGER:  ROLE_SUPERVISOR 
    ROLE_ADMIN:  ROLE_MEMBER 
    ROLE_SUPER_ADMIN: [ROLE_MANAGER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

ROLE_SUPERVISOR을 가지고 있으며, 내가 전화로 사용자는 나는에 로그인 한 경우 :

$this->get('security.context')->isGranted('ROLE_MONITOR') 

내가이 true를 돌려 기대하지만, 현재 반환 그릇된.

각 사용자에게 모든 역할을 추가하지 않고도 역할을 상속하여 isGranted를 호출하면 계층 내의 다른 모든 "관련 역할"을 검사 할 수 있습니까? 그렇다면 어떻게?

+0

현재 어떤 역할을합니까? SUPERVISOR 사용자는'$ this-> get ('security.context') -> isGranted ('ROLE_SUPERVISOR')'가 true를 리턴합니까? 그렇지 않은 경우 계층 구조에 문제가 없으며 각 사용자의 역할을 구성하는 방법에 문제가 없습니다. – Sehael

답변

1

역할에 []를 넣어야합니다. 예상대로 작동합니다.

role_hierarchy: 
    ROLE_USER:   [] 
    ROLE_STAFF:   [ROLE_USER] 

    ROLE_SCORE_ENTRY: [ROLE_USER, ROLE_STAFF] 
    ROLE_SCORE_ADMIN: [ROLE_USER, ROLE_STAFF, ROLE_SCORE_ENTRY] 

    ROLE_ASSIGNOR:  [ROLE_STAFF] 
    ROLE_ASSIGNOR_KAC: [ROLE_ASSIGNOR] 
    ROLE_ASSIGNOR_CORE: [ROLE_ASSIGNOR] 
    ROLE_ASSIGNOR_EXTRA: [ROLE_ASSIGNOR] 

    ROLE_ASSIGNOR_ADMIN: 
     - ROLE_ASSIGNOR 
     - ROLE_ASSIGNOR_KAC 
     - ROLE_ASSIGNOR_CORE 
     - ROLE_ASSIGNOR_EXTRA 

    ROLE_DEVELOPER: [ROLE_USER] 

    ROLE_ADMIN:  
     - ROLE_STAFF 
     - ROLE_ASSIGNOR_ADMIN 
     - ROLE_SCORE_ADMIN 
     - ROLE_ALLOWED_TO_SWITCH 

    ROLE_SUPER_ADMIN: 
     - ROLE_ADMIN 
     - ROLE_DEVELOPER 
     - ROLE_ALLOWED_TO_SWITCH 
+0

단일 역할을 상속하려면 배열이 필요하지 않습니다. [The docs] (http://symfony.com/doc/current/book/security.html#hierarchical-roles)는 이에 대한 예를 보여줍니다. – Sehael