2013-10-29 2 views
1

Symfony2를 시작했습니다. 사용자를 계층 적 카테고리로 그룹화하고 ROLES를 부여하고 싶습니다. 신청서에는 많은 카테고리가 필요하며 그 중 일부는 수백 개의 다른 카테고리를 모방합니다 (다른 사용자의 부모도 될 수 있음). 부모에게 역할을주고 싶습니다. 그리고 나서 아이들은 역할을 상속받을 수 있습니다. 가장 좋은 방법은 무엇입니까? - FOSUserBundle의 그룹을 사용할 수는 있지만 부모 그룹 방법을 찾을 수 없으므로 FOSUserBundle의 그룹이 이미 ROLES를 사용하고 있으므로 완벽 할 것입니다. - 또는 처음부터 범주 엔터티를 만들어야하지만이 작업을 수행하는 방법 (범주 및 역할을 연결하는 방법)이 확실하지 않으며 "바퀴를 다시 만든"과 같은 소리가 들립니다.Symfony2 그룹 계층

+1

[ACL (액세스 제어 목록) (Symfony 요리 책)] (http://symfony.com/doc/current/cookbook/security/acl.html)을 사용해 보셨습니까? –

답변

0

ACL은 좋은 방법이라고 생각하지만 문제를 해결할 수있는 또 다른 영리한 방법은 유권자를 이용하는 것입니다. 유권자는 연결된 사용자가 주어진 객체에 대해 무언가를 할 권한이 있는지 결정하는 책임을지는 클래스입니다. nested tree system으로 간단한 계층 구조를 작성한 다음 유권자에게 here을 선언 할 수 있습니다. 이 기사를 읽고 그것에 대해 배우면 정말 멋집니다.

내 생각에 비즈니스 로직이 사용자 권한과 상호 작용할 수있는 매우 멋진 방법입니다. 그것은 나를 위해 일했습니다. 여기 내 프로젝트는 다음과 같습니다.

저는 직원, 컨설턴트, 하청 업체, 클라이언트 등 다양한 유형의 직원을 보유하고 있으며 각 직원은 인력, 영업 관리자, 관리자 및 그들 중 일부는 선교에 ... 어떤 식 으로든, 당신이 상상할 수있는대로, 그것은 우리의 마음을 불었다.

같은 클래스에있는 여러 트리 때문에 Gedmo 중첩 트리를 사용할 수 없었습니다. gedmo는 그런 것을 허용하지 않습니다 ... 그래서 우리는 UserBoss 시스템을 설정했고, 매번 어떤 것이 있는지 알고 싶습니다. 누군가를 보여 주거나 편집 할 수있는 권리가 있습니다. UserBossManager (UserBossManager를 통해 어딘가에 변경 될 때마다 트리를 유지 관리해야 함)와 isBoss ($ user1, $ user2) 함수를 사용하여 UserBoss 관계를 확인해야합니다. user1은 user2의 보스입니다 (계층 구조 때문에 분명히 직접적인 관계를 확인할 수 없으며 상사의 보스도 내 보스입니다!).

내 의견이 도움이 되길 바랍니다. (또는 다른 어떤 독자) :) 행운을 빌어 요!