2012-02-24 18 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

関連する問題