5

저는 Symfony2를 처음 사용했으며 회사의 요구 사항에 따라 소나타 관리 및 사용자 번들을 사용하고 있습니다.사용자 역할에 따라 대시 보드에 항목 표시

로그인 한 사용자의 역할에 따라 대시 보드에서 항목을 숨기거나 표시 할 수 있는지 알고 싶습니다.

예를 들어, Sonata AdminBundle (사용자, 회사, 사명, 사이트 등 ... 관리)에서 관리하는 여러 엔티티가 있으며 최고 관리자, 회사 및 사이트 관리에만 사용자 관리를 표시하고 싶습니다. 다른 역할 (예 : SITE_ADMIN) 및 임무를 세 번째 역할로 변경합니다.

혹시 이런 상황에 직면 한 적이 있습니까? 솔루션에 직접 갈 수있는 솔루션이나 단서를 주시겠습니까?

많은 감사,

ENES

답변

5

사용 Role handler 예를 들어, 그룹을 (를 만드는) 관리자 만에 사용자와 관련된 권한을 수 있습니다. 그런 다음 관리자 사용자를 관리자 그룹에 할당하십시오. 소나타 관리자는 제한 사항을 선택하고 관리자에게 대시 보드 항목 만 표시합니다.

+2

설정에'sonata_admin : security : handler : sonata.admin.security.handler.role'을 설정해야합니다. 그러면 관리자의 다른 부분에 액세스하는 데 필요한 역할을 설정할 수 있습니다. –

+0

답장을 보내 주셔서 감사합니다. 조금 늦었지만 모든 것이 지금 나에게 좋다. :) – Enessari

2

또한 당신은 숨길 수와 userboard의 디스플레이 블록이 방법은 :

# app/config/config.yml 
sonata_admin: 
dashboard: 
    groups: 
     acme.admin.group.content: 
      label: acme.admin.group.content 
      label_catalogue: AcmeDemoBundle 
      items: 
       - sonata.admin.post 
     acme.admin.group.blog: 
      items: ~ 
      item_adds: 
       - sonata.admin.page 
      roles: [ ROLE_ONE, ROLE_TWO ] 
     acme.admin.group.misc: ~ 

으로는 in the docs을 언급했다.

액세스 가능성이 아니라 블록의 가시성 만 변경된다는 점에 유의하십시오. 제한 사항이 없으면 사람은 브라우저에서 링크를 계속 열 수 있습니다.

sonata.admin.security.handler.role을 구현하는 이전 답변을 사용하는 경우 사용자가 올바른 역할을하지 않으면 블록이 자동으로 숨겨집니다.