2013-02-24 6 views
8

FOSUserBundle 및 그룹 옵션을 사용하고 있습니다. 등록 작업. 그룹의 창작도 가능합니다. admin 및 client라는 두 개의 그룹을 만들고 수동으로 fos_group 테이블의 admin 그룹에 : 1 : {i : 0; s : 10 : "ROLE_ADMIN";}을 추가 한 다음 MANULLY 설정과 fos_user_user_group의 항목을 연결합니다 해당 사용자로 로그인하면 관리자로 로그인 할 수 있습니다.FOSUserBundle 그룹 역할 설정

그러나 분명히이 방법에는 몇 가지 단점이 있습니다. 사용자를 그룹에 추가하려면 어떻게해야합니까? 승격 명령 행 옵션을 사용하면 해당 사용자가 fos_user 테이블에 역할을 추가하게되고, 그룹을 사용하고 있으므로 fos_user 테이블의 역할 열이 더 이상 사용되지 않는다고 생각됩니다. 그리고 여전히 목적을 달성한다면, 사용자를 그룹에 프로그래밍 방식으로 할당하려면 어떻게해야합니까?

다른 중요한 점은 그룹에 역할을 할당하는 방법입니다. 어쩌면 전체 그룹스 아이디어에 대해 뭔가를 얻지는 못했지만, 생성시 그룹의 역할을 추가 할 수있을 것으로 기대 했었지만 "새로운"양식은 그룹 이름을 묻는 것뿐입니다. 그룹에 대한 사용자 승격 명령과 동등한 것으로 보입니다.

감사합니다.

답변

14

사용자를 그룹에 프로그래밍 방식으로 할당하려면 어떻게합니까?

$user->addGroup($group); 

당신이 FOSUserBundle 사용자 엔티티를 사용하고 있기 때문에이 GroupableInterface를 구현 FOS\UserBundle\Model를 확장합니다. 따라서 사용자 클래스에는 이미 그룹 메소드 getGroups, hasGroup($name), addGroup(GroupInterface $group), removeGroup(GroupInterface $group)이 있습니다. 참조 모양을 보려면 https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Model/User.php

어떻게 그룹에 역할을 할당합니까?

$em = $this->getDoctrine()->getEntityManager(); 

$group = new Group(); 
$group->setRoles(array()); 
$group->addRole('ROLE_ACTOR'); 
$em->persist($group); 
$em->flush(); 

당신은 당신의 자신의 역할 할당을 구현해야, fosuserbundle이 사전 정의 된 형태를 가지고 있지 않습니다.

+0

감사합니다. – cbaltatescu

+0

그리고 내 경우에는 - 내가 그룹 -> oneToMany-> User의 관계를 가지고 있다면, 나는 특정한 유스 케이스를 가지고 있는가? 나는 이것을 할 수 없다. 내가 무엇을해야만 하는가? – krachleur