いくつかのACL権限が必要なSymfony2アプリケーションが忙しいです。symfony2複数のユーザの複数のオブジェクトへのACLアクセス
私はSymfony2を初心者としているので、正しい方法を見ているかどうかはわかりません。
私は複数のクライアントを持ち、それぞれ複数のアカウントを持っています。
すべてのクライアントとすべてのアカウントにアクセスできるスーパー管理者(ROLE_SUPER_ADMIN)があります。 次に、管理者ロール(ROLE_ADMIN)があります。これは、特定のクライアントおよびそのクライアントのすべてのアカウントへのアクセスのみを許可します。 次にエージェント(ROLE_AGENT)があります。これには、クライアントの特定のアカウントに対するアクセス許可のみが必要です。
私は、私は次のコードを使用することができ、特定のオブジェクトへのユーザーアクセスを与えるためにsymfonyのドキュメントで見た:新しいアカウントを作成するときに、私が与えることができるので、
// creating the ACL
$aclProvider = $this->get('security.acl.provider');
$objectIdentity = ObjectIdentity::fromDomainObject($account);
$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);
を、現在ログイン中新しく作成されたアカウントへのユーザーアクセス。 しかし、アカウントへのクライアントアクセスの他のすべてのユーザーへのアクセスを許可するにはどうすればよいですか?
すべてのユーザーをループしてすべてのユーザーに対して上記のコードを実行する必要はありません。
たとえば、すべてのクライアントを表示しているときに、どのクライアントにアクセスしているのかを知る必要があります。また、アカウントを表示するときに、ユーザーがアクセスできるアカウントを知る必要があります。
また、新しいユーザーをクライアントに追加する場合、ユーザーはそのクライアントのすべてのアカウントに自動的にアクセスする必要があります。
私は、ユーザーがアカウント/クライアントにアクセスできるかどうかを知る必要があります。ユーザーがアクセス権を持っている場合、自動的に表示/編集/削除が許可されます。
特定の役割のすべてのユーザーに権限を割り当てる必要がある場合は、代わりに役割ベースの「ACL」を使用する必要があります。いくつかのサンプルコードを書くことができるはずです(次の数時間で)。しかし、ロールがあなたの後ろのものでないならば、あなたは**あなたが許可を割り当てたいと思う各ユーザを反復する必要があります。 –