Ich bin beschäftigt mit einer Symfony2-Anwendung, die einige ACL-Berechtigungen benötigt.Symfony2 ACL Zugriff auf mehrere Objekte für mehrere Benutzer
Ich bin ein Neuling mit Symfony2, also nicht sicher, ob ich das auf die richtige Weise ansehe.
Ich habe mehrere Clients mit jeweils mehreren Konten.
Ich habe ein Super-Administrator (ROLE_SUPER_ADMIN), die den Zugriff auf alle Clients und alle Konten haben. Dann habe ich eine Admin-Rolle (ROLE_ADMIN), die nur Zugriff auf einen bestimmten Client und alle Konten für diese Clients erlaubt wird. Dann gibt es Agenten (ROLE_AGENT), die nur bestimmte Konten für Clients haben sollten.
Ich sah auf den symfony-Dokumentation, die einem Benutzer den Zugriff auf ein bestimmtes Objekt zu geben, ich den folgenden Code verwenden:
// 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);
Also, wenn Sie ein neues Konto erstellen, kann ich die aktuelle geben eingeloggte in Benutzerzugriff auf das neu erstellte Konto. Aber wie gewähre ich Zugriff auf alle anderen Benutzer des Clients Zugriff auf das Konto?
Ich möchte nicht alle Benutzer durchlaufen und den obigen Code für jeden Benutzer ausführen.
So zum Beispiel, wenn alle Clients sehen, muss ich wissen, welche Clients der Benutzer Zugriff hat, oder wenn die Konten sehen, ich muss wissen, welche Konten der Benutzer Zugriff hat.
Auch wenn ein neuen Benutzer an einen Client hinzufügen, müssen die Benutzer automatisch auf Zugang zu allen Konten für diesen Client.
Als Randbemerkung, ich muss wissen, nur dann, wenn der Benutzer den Zugriff auf das Konto/Client hat. Wenn ein Benutzer Zugriff hat, dann werden sie automatisch angezeigt/bearbeitet werden dürfen/löschen usw.
Wenn Sie für jeden Benutzer in bestimmte Rolle Berechtigungen zuweisen Sie Sie stattdessen rollenbasierte 'ACL' verwenden sollte ... die viel gleichermaßen Rechnung basiert. Ich sollte in der Lage sein, einen Beispielcode zu schreiben (in den nächsten Stunden). Wenn Rollen jedoch nicht Ihr Ziel sind, müssen Sie ** jeden Benutzer durchlaufen, dem Sie Berechtigungen zuweisen möchten. –