2012-02-24 2 views
3

저는 몇 개의 컨트롤러에서 ACL을 사용하고 있으며 같은 코드를 반복해서 쓰지 않고 ACL을 사용하는 "깨끗한"방법이 있는지를 배회하고있었습니다.Symfony2 ACL이 서비스로 구현 되었습니까?

내가 얘기 해요 ACL 코드는 the sf2 cookbook.

에서

// creating the ACL 
$aclProvider = $this->get('security.acl.provider'); 
$objectIdentity = ObjectIdentity::fromDomainObject($comment); 
$acl = $aclProvider->createAcl($objectIdentity); 

// retrieving the security identity of the currently logged-in user 
$securityContext = $this->get('security.context'); 
$user = $securityContext->getToken()->getUser(); 
$securityIdentity = UserSecurityIdentity::fromAccount($user); 

// grant owner access 
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER); 
$aclProvider->updateAcl($acl); 

수있는 좋은 아이디어는 서비스로이 코드를 구현 한 다음 필요한 경우를 확장하고, 대신 사용하는 것 각 컨트롤러에 같은 코드를 쓰는가?

답변

2

예, 서비스 내에이를 랩핑해야합니다. & 붙여 넣기를 복사해야하는 코드 양을 줄일뿐만 아니라 다른 서비스에도 주입 할 수 있으므로 여전히 ACL 시스템을 활용할 수 있습니다.

+3

사실, 이미 완료했습니다. (https://github.com/Problematic/ProblematicAclManagerBundle) – Problematic

+0

@Problematic 링크를 사용해 주셔서 감사합니다. 지금 사용해보세요. –

+0

감사! 이거 엄청나 네. 좋은 번들. – Tool

관련 문제